JavaScript如何循环返回多个Promise并等待它们全部做其他事情

JavaScript如何循环返回多个Promise并等待它们全部做其他事情,第1张

JavaScript如何循环返回多个Promise并等待它们全部做其他事情

您可以为此使用

Promise.all
(spec,MDN):它接受一堆单独的诺言,并给您返回一个诺言,当您给它的所有诺言都得到解决时,该诺言即被解决;或者当任何一个诺言被拒绝时,它就被拒绝。

因此,如果您做出

doSomeAsyncStuff
承诺,那么:

var promises = [];for(i=0;i<5;i+){    promises.push(doSomeAsyncStuff());}Promise.all(promises)    .then(() => {        for(i=0;i<5;i+){ doSomeStuffonlyWhenTheAsyncStuffIsFinish(); }    })    .catch((e) => {        // handle errors here    }); function doSomethingAsync(value) {      return new Promise((resolve) => {        setTimeout(() => {          console.log("Resolving " + value);          resolve(value);        }, Math.floor(Math.random() * 1000));      });    }    function test() {      let i;      let promises = [];      for (i = 0; i < 5; ++i) {        promises.push(doSomethingAsync(i));      }      Promise.all(promises)          .then((results) => { console.log("All done", results);          })          .catch((e) => {   // Handle errors here          });    }    test();

(对此

.catch
您一点也不在意,但是您确实想要
.catch
在现实世界中使用它,如先前所示。)

样本输出(由于,

Math.random
首先完成的结果可能会有所不同):

Resolving 3Resolving 2Resolving 1Resolving 4Resolving 0All done [0,1,2,3,4]


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5110373.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存