我有5个承诺,我想放在一个具体的顺序。但我一直在努力寻找一种方法来将它们放在正确的顺序中。我尝试了以下方法,得到的顺序是(1-2)-5-(3-4)而不是(1-2)-(3-4)-5或(3-4)-(1-2)-5 (也可以)。所以5号来得太早了,应该是最后一个。我尝试将1+2+3+4放在一个数组/列表中,然后创建第五个promise,告诉它等待1-4的执行。但订单结果不正确,如上所述...有什么想法吗?
this.promises.push(PROMISE1.then(() => {
**Code for PROMISE 1**
this.promises.push(PROMISE2.then(() => {
**Code for PROMISE 2**
})
);
}));
this.promises.push(PROMISE3.then(() => {
**Code for PROMISE 3**
this.promises.push(PROMISE4).then(() => {
**Code for PROMISE 4**
})
);
}));
Promise.all(this.promises).then(() => {
**Code for PROMISE 5**
});发布于 2017-05-05 19:33:18
返回内部的promise,而不是推送每个promise的回调。
var promises = [];
promises.push(method1().then(() => { return method2().then(() => { } });
promises.push(method3().then(() => { return method4().then(() => { } });
Promise.all(promises).then(() => { ... });下面是一个工作示例:
function delay(time, name) {
console.log("running", name);
return new Promise(r => setTimeout(r, time));
}
var promises = [];
promises.push(delay(1000, "1").then(() => {
console.log("1 inner");
return delay(500, "1 inner").then(() => console.log("1 inner most"));
}));
promises.push(delay(250, "2").then(() => {
console.log("2 inner");
return delay(1000, "2 inner").then(() => console.log("2 inner most"));
}));
Promise.all(promises).then(() => console.log("all done!"));
https://stackoverflow.com/questions/43803854
复制相似问题