我正在尝试创建一组承诺,以便我可以批量承诺而不是一起执行它们以避免关闭我的服务器。我想一次执行最多 20 个承诺。我写了以下代码:
let promises = [];
let create;
let update;
let i=0;
let users = users.json;
if (users && usersjson.users.length) {
for (const user of users) {
if (userexists) {
update = new promise(async (resolve,reject) => {
//Function to update user
});
promises.push(update);
i++;
} else {
create = new promise (async (resolve,reject) => {
//Function to create a new user
});
promises.push(update);
i++;
}
if (promises.length >= 20 || i >= usersjson.users.length) {
await Promise.all(promises)
.then((response)=>{
console.log(response);
promises=[];
}).catch((err)=> {
console.log(err);
})
}
}
}
但是,我发现promise是在我定义它们时执行的,而不是在我调用Promise.all时被推入数组并执行,我不知道为什么。
我也希望 Promise.all 函数继续运行,即使单个承诺被拒绝,如果我的代码构建方式可行的话。如果代码失败,我在每个承诺中都有一个问题,这是正确的方法吗?