我参考这个地址写了一些Promise的demo,
https://developers.google.com...
当我学到到这个例子时,
我写了一个类似的demo:
https://jsfiddle.net/weisiwu/...
不过结果的执行顺序和给出的例子不一样,请问如何修改代码才能达到同时发起多个请求,但是返回的结果仍然按顺返
回(不是Promise.all那种全部完成后才返回的,而是有完成的且该完成项前面的也都完成了就返回该项这种)?
我参考这个地址写了一些Promise的demo,
https://developers.google.com...
当我学到到这个例子时,
我写了一个类似的demo:
https://jsfiddle.net/weisiwu/...
不过结果的执行顺序和给出的例子不一样,请问如何修改代码才能达到同时发起多个请求,但是返回的结果仍然按顺返
回(不是Promise.all那种全部完成后才返回的,而是有完成的且该完成项前面的也都完成了就返回该项这种)?
不明白的你这样做的意义是什么?换句话说就是现实中有没有这样的场景呢?
Promise.all([promiseArray])的话返回结果是按照promiseArray的顺序来安放的,为啥all不能满足你的需求呢?
如果你要发令枪响一起跑,运动员还是按照跑道顺序在终点排队,但是你这样做的退出条件又是啥呢?什么时候让到达终点的运动员开始排队? 你又什么时候去确认排队呢?
var timeline = [
function() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('task5<br>');
}, 1000);
});
},
function() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('task6<br>');
}, 1500);
});
},
function() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('task7<br>');
}, 2000);
});
},
function() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('task8<br>');
}, 800);
});
}
];
timeline.map(function(val) {
return val();
}).reduce(function(init, req) {
return init.then(function() {
return req;
}).then(function(result){
document.writeln(result)
})
}, Promise.resolve());
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
改成这样就行了