栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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]


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/432235.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号