javascript - Promise 执行顺序问题。
本文介绍了javascript - Promise 执行顺序问题。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
我参考这个地址写了一些Promise的demo,
https://developers.google.com...
当我学到到这个例子时,
我写了一个类似的demo:
https://jsfiddle.net/weisiwu/...
不过结果的执行顺序和给出的例子不一样,请问如何修改代码才能达到同时发起多个请求,但是返回的结果仍然按顺返
回(不是Promise.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());
这篇关于javascript - Promise 执行顺序问题。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文