鍍金池/ 問答/數(shù)據(jù)庫  HTML/ 動(dòng)態(tài)執(zhí)行promise隊(duì)列該如何做呢forEach+sync await不可用

動(dòng)態(tài)執(zhí)行promise隊(duì)列該如何做呢forEach+sync await不可用

有一業(yè)務(wù)邏輯
查詢users對象,生成一個(gè)數(shù)組

users.forEach(....

根據(jù)userid 查詢一個(gè)值,擴(kuò)展到users[i]中.

但是sequelize返回的都是promise對象

這就導(dǎo)致forEach中要加入promise,這是不符合規(guī)范的,也行不通。

但是此需求該如何實(shí)現(xiàn)呢?

試過

for(var i=0;i<users.length;i++){
    async(()=>{
       await x.findOne(... 
    })()
   }

此法無效

也試過co,也不行
promise.All也試過,但是用

function p(){
    return new promise(..
}

則調(diào)用的時(shí)候有涉及到for循環(huán),請教如何解決該矛盾
回答
編輯回答
菊外人

let asyncFn = (item) => {
return new Promise((resolve, reject) => {

setTimeout(() => {console.log(item); resolve(true)}, 0)

})
}

let a = ['a','b','c','d']

a.reduce((previous, current, index, array) => {
return previous
.then(()=>{return asyncFn(array[index])})
}, Promise.resolve())

2018年5月24日 23:03
編輯回答
維他命
const results = Promise.all(users.map(user => doWhatever(user)));
2017年8月1日 01:02
編輯回答
蔚藍(lán)色
async function test() {
  for (let i = 0, len = 2; i < len; i++) {
    console.log(i);
    await delay();
  }
  console.log('end');
}

function delay() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve();
    }, 2000);
  })
}

test();
2018年5月23日 23:56