动态执行promise队列该如何做呢forEach+sync await不可用

0 0 promise ES6 sequelize
飞翔的熊bla
飞翔的熊bla

声望值:45 0人

2019-01-26 15:10:43 提问

关注 0关注

收藏 0收藏, 97浏览

有一业务逻辑
查询users对象,生成一个数组

users.forEach(....

根据userid 查询一个值,扩展到users[i]中.

但是sequelize返回的都是promise对象

这就导致forEach中要加入promise,这是不符合规范的,也行不通。

但是此需求该如何实现呢?

试过

for(var i=0;i{
       await x.findOne(... 
    })()
   }

此法无效

也试过co,也不行
promise.All也试过,但是用

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

则调用的时候有涉及到for循环,请教如何解决该矛盾
请先 登录 后评论

3个回答

  • 攻城狮44声望 2018-09-25 09:28

    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();
    请先 登录 后评论
  • wolfing_85声望 2018-09-25 09:28

    const results = Promise.all(users.map(user => doWhatever(user)));
    请先 登录 后评论
  • SOC丶小兮123声望 2018-09-25 09:28

    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())
    请先 登录 后评论

注册新账号

悬赏追问
10
  • 10
  • 20
  • 50
  • 100
  • 200
  • 输入数值
发布追问