Javascript 每一个承诺的回应
我需要在循环中调用ascync操作:Javascript 每一个承诺的回应,javascript,promise,ionic3,Javascript,Promise,Ionic3,我需要在循环中调用ascync操作: for (var i = 0; i < message.destinatarios.length; i++) { messageList.push(this.sms.send(destinatario.numero_celular, string)); // this will take a litle time to be executed } // Here I need something to be fired each time on
for (var i = 0; i < message.destinatarios.length; i++) {
messageList.push(this.sms.send(destinatario.numero_celular, string));
// this will take a litle time to be executed
}
// Here I need something to be fired each time one of the promises in messageList is resolved
Promise.all(messageList)
.then(res => {
//that is executed when all the promises have been resolved
})
.catch(err => {
// that is executed when some of then fail
});
既然我需要等待所有承诺兑现,直到进入下一步,我该如何以正确的方式完成呢?您可以为每个承诺分配一个
resolveCallback
。
然后,使用Promise.all()
let counter = 0;
for (var i = 0; i < message.destinatarios.length; i++) {
const prom = this.sms.send(destinatario.numero_celular, string);
messageList.push(prom);
prom.then(() => {
//your logic for whatever you want to do for every time a promise is resolved
console.log("processing " + ++counter + " of " + messageList.length);
})
}
Promise.all(messageList)
let计数器=0;
for(变量i=0;i{
//每次承诺解决后,你想做什么就做什么的逻辑
console.log(“+messageList.length”的“处理”+++counter+”);
})
}
Promise.all(消息列表)
您可以为每个承诺分配一个resolveCallback
。
然后,使用Promise.all()
let counter = 0;
for (var i = 0; i < message.destinatarios.length; i++) {
const prom = this.sms.send(destinatario.numero_celular, string);
messageList.push(prom);
prom.then(() => {
//your logic for whatever you want to do for every time a promise is resolved
console.log("processing " + ++counter + " of " + messageList.length);
})
}
Promise.all(messageList)
let计数器=0;
for(变量i=0;i{
//每次承诺解决后,你想做什么就做什么的逻辑
console.log(“+messageList.length”的“处理”+++counter+”);
})
}
Promise.all(消息列表)
Promise.all并行运行嵌套承诺。你不能用柜台。至少不改变计数器作为副作用。承诺。所有承诺都并行运行嵌套承诺。你不能用柜台。至少不改变计数器作为副作用。如果有索引,为什么要增加计数器?Promise.all将按照您发送的顺序向您提供所有结果。this.sms.send()
是否返回一个承诺?是的,this.sms.send返回一个承诺@OzanI编辑它@Xufox,但这不是真正的代码,只是给出一个承诺example@WelderMarcos是的,但如果你用的是承诺,在解决这些问题时,你不需要计算它们。你已经有了一个回调,当它们处理完所有的结果时会被调用。如果你有一个索引,为什么要增加一个计数器?Promise.all将按照您发送的顺序向您提供所有结果。this.sms.send()
是否返回一个承诺?是的,this.sms.send返回一个承诺@OzanI编辑它@Xufox,但这不是真正的代码,只是给出一个承诺example@WelderMarcos是的,但如果你用的是承诺,在解决这些问题时,你不需要计算它们。你已经有了一个回调,当他们处理完所有结果后,就会调用它。非常感谢你解释@Alex非常感谢你解释@Alex似乎是解决问题最有效的方法,但是每个承诺中的响应会影响承诺吗?所有响应?@WelderMarcos,不。似乎是解决问题最有效的方法,但每个承诺中的回应会影响承诺吗?所有回应?@WelderMarcos,不会。