Promise.all 是先进先出吗?
假如我有一个数组,里面只存了id,我要根据这个id取异步查询数据。 代码如下:
var id_arr=[1,4,5,2];
var tasks=[];
for(var i in arr){
tasks.push(asyncQuery(arr[i]));
}
Promise.all(tasks).then(function(val){
//这里拿到的val数组里的顺序是我前面添加的顺序一样吗?是先进先出吗?
})
如果不是先进先出的话,我现在的需求是:id_arr其实就是这些数据的一个排名,我根据id拿到每个数据的详细信息,最后把整个数据显示出来。 有没有什么办法呢?
12 回复
@welefen O(∩_∩)O哈哈~
那另一个问题就来
var id_arr=[1,4,5,2];
var tasks=[];
for(var i in arr){
tasks.push(asyncQuery(arr[i]));
}
let result = yield tasks
此时的yield是按顺序的么?
'use strict'
let sleep = (time, info) => {
return new Promise(function (resolve) {
setTimeout(function () {
console.log(info)
resolve('this is ' + info)
}, time)
})
}
let loser = sleep(1000, 'loser')
let winner = sleep(4, 'winner')
// main
Promise.all([winner, loser]).then(value => {
console.log("所有都完成后会执行then,它们是并行的哦: " + value) // => 'this is winner'
})
$ node ../promise/api/all.js
winner
loser
所有都完成后会执行then,它们是并行的哦: this is winner,this is loser