【问题标题】:underscore.each will complete cycle instead await inside [duplicate]underscore.each 将完成循环而不是在内部等待 [重复]
【发布时间】:2022-01-20 10:23:10
【问题描述】:

我有一个 _each(),里面有一个等待我在 MySQL 中检查用户状态的地方

循环后mysql响应返回已经完成。 有一种方法可以等待方法 checkUserState(),然后再转到 _each() 的下一个元素?

 let obj = _.each(guest_list.guests, async function (value){
     let user_state = await DataController.checkUserState('2305');
    value.Owner.state = user_state;
    console.log('state:' + user_state);
    return value;
  });

  console.log('cycle complete')
 return obj;

结果是:循环完成状态:notdisturb 状态:notdisturb 状态:notdisturb 状态:notdisturb 状态:notdisturb 状态:notdisturb 状态:notdisturb 状态:notdisturb 状态:notdisturb 状态:notdisturb 状态:不打扰 状态:不打扰

【问题讨论】:

    标签: javascript node.js async-await


    【解决方案1】:

    你需要使用Promise.all

    let obj = await Promise.all(_.map(guest_list.guests, async function (value){
         let user_state = await DataController.checkUserState('2305');
        value.Owner.state = user_state;
        console.log('state:' + user_state);
        return value;
      }));
    
      console.log('cycle complete')
     return obj;

    【讨论】:

    • _.each 不返回数组,这是行不通的
    • 和我的代码一样,在等待之前循环完成
    • @RogerAI 你需要 _.map 函数而不是 each 或者你需要使用 for 循环。
    • 也更新了我的答案,请立即查看。
    猜你喜欢
    • 1970-01-01
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 2012-09-30
    • 2022-01-04
    • 1970-01-01
    相关资源
    最近更新 更多