为了账号安全,请及时绑定邮箱和手机立即绑定

Promise.all循环执行问题

Promise.all循环执行问题

湖上湖 2018-09-23 22:10:21
setTimeout内需要放一个请求,如何让下次执行的时候是确保之前是有返回结果的 var array=[];    function output(j) {        return new Promise( function(resolve, reject) {             setTimeout(function () {                console.log('这里请求开始',j)                return resolve(j);             },1000 * j);         }).then(function (res) {            return Promise.resolve(res)         });     }    for (var i=0;i<5;i++){         array.push(output(i));     }    Promise.all(array).then(function (res) {        console.log('res',res);
查看完整描述

1 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

你的意思是 前一个promise完成才调用下一个?

for (var i=0;i<5;i++){
    array.push(output(i));}

你这里 都已经 全部一起调用了

顺序执行可以用reduce

 var array=[]; var result = [];function output(j) {
    j = j+1//使用前一个请求回来的数据
    return new Promise( function(resolve, reject) {
        setTimeout(function () {            console.log('这里请求开始',j)            return resolve(j);
        },1000 * j);
    }).then(function (res) {
        result.push(res);//每次请求返回数据 push进数组
        return Promise.resolve(res)
    });
}for (var i=0;i<5;i++){
    array.push(output);//只是把方法push进数组 不调用}var lastPromise = array.reduce((p,v)=>p.then(v),Promise.resolve(0))//在这里顺序调用 lastPromise.then(v=>{  console.log(result)
})


查看完整回答
反对 回复 2018-09-23
  • 1 回答
  • 0 关注
  • 2452 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信