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