Javascript 如何确保随机数承诺的执行顺序?
如何重新排列下面的代码以输出Javascript 如何确保随机数承诺的执行顺序?,javascript,promise,Javascript,Promise,如何重新排列下面的代码以输出0011223344,而不是01234?我对承诺比较陌生,不知道如何批量处理承诺,第二个承诺只有在第一个承诺得到解决时才会执行 function getPromise(value) { return new Promise(function(resolve, reject) { console.log(value); setTimeout(function () { resolve(value); }, Math.random(
0011223344
,而不是01234
?我对承诺比较陌生,不知道如何批量处理承诺,第二个承诺只有在第一个承诺得到解决时才会执行
function getPromise(value) {
return new Promise(function(resolve, reject) {
console.log(value);
setTimeout(function () {
resolve(value);
}, Math.random() * 1000);
});
}
for (var i = 0; i < 5; i++) {
getPromise(i).then(console.log);
}
函数getPromise(值){
返回新承诺(功能(解决、拒绝){
console.log(值);
setTimeout(函数(){
决心(价值);
},Math.random()*1000);
});
}
对于(变量i=0;i<5;i++){
getPromise(i).then(console.log);
}
编辑
在真实场景中,承诺的数量是随机和不可预测的。
由于Promissions内部代码在创建后立即开始执行,所以我不能像Promissions数组那样迭代
我想这就是原因,因为我无法让它与
承诺一起工作。所有等待前一个,然后执行下一个:
var promise = Promise.resolve();
for (let i = 0; i < 5; i++) {
promise = promise.then( _=> getPromise(i).then(console.log) );
}
var promise=promise.resolve();
for(设i=0;i<5;i++){
promise=promise.then(=>getPromise(i).then(console.log));
}
等待上一个,然后执行下一个:
var promise = Promise.resolve();
for (let i = 0; i < 5; i++) {
promise = promise.then( _=> getPromise(i).then(console.log) );
}
var promise=promise.resolve();
for(设i=0;i<5;i++){
promise=promise.then(=>getPromise(i).then(console.log));
}
如果这在NodeJS中使用,您可以使用类似于async
的库,该库具有async.series()
和async.falter()
方法。也可以在客户端使用。可能重复[0,1,2,3,4]。reduce((acc,i)=>{return acc.then(()=>{return getPromise(i).then(console.log)};},Promise.resolve())代码>它(缓慢地)将0011223344输出到控制台。@zero298请查看我的编辑。@JaredSmith您的解决方案也有效。谢谢如果在NodeJS中使用此函数,则可以使用类似于async
的库,该库具有async.series()
和async.falter()
方法。也可以在客户端使用。可能重复[0,1,2,3,4]。reduce((acc,i)=>{return acc.then(()=>{return getPromise(i).then(console.log)};},Promise.resolve())代码>它(缓慢地)将0011223344输出到控制台。@zero298请查看我的编辑。@JaredSmith您的解决方案也有效。谢谢