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) })
添加回答
举报
0/150
提交
取消