promise.all接收的promise數組是按順序執行的還是一起執行的,也就是說返回的結果順序是固定的嗎。edit1:根據大家的回答,應該是同步執行的,但是這樣就有效率問題了,如果想改成異步執行怎么辦呢。edit2:弄糊涂了,有些人認為結果是按順序返回,有些人認為結果順序不確定。var a = new Promise(function (resolve,reject) {
setTimeout(function () {
resolve('aaa');
},3000);
});var b = new Promise(function (resolve,reject) {
setTimeout(function () {
resolve('bbb');
},1000);
});var p = Promise.all([a,b]);
p.then(function(val) { console.log(val);
});//結果:['aaa','bbb']我寫了個測試,可以看到a的時間雖然比較長,但a的結果確實排在了b的前面。返回結果的確是按順序排列的。但是,var a = new Promise(function (resolve,reject) {
setTimeout(function () {
resolve('aaa');
},3000);
});var b = new Promise(function (resolve,reject) {
setTimeout(function () {
resolve('bbb');
},3000);//改成3秒});var p = Promise.all([a,b]);
p.then(function(val) { console.log(val);
});//結果:['aaa','bbb']將b的時間也改成3秒后,發現整體運行時間并沒有改變。所以我認為,promise應該是并發執行的,這樣的話結果返回的順序應該也是亂的,但promise.all內部不曉得做了啥處理,讓返回結果的排序又正常了。不曉得我的理解對不對。
es6中的promise.all使用問題
慕碼人2483693
2018-10-24 17:15:22