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您的解决方案也有效。谢谢