【问题标题】:Promises : How to return a value from a "then" block of "Promise.all" back to the invoking code? [duplicate]Promises:如何将“Promise.all”的“then”块中的值返回给调用代码? [复制]
【发布时间】:2020-04-29 14:53:15
【问题描述】:

考虑以下情况:

// The caller 

const returnValueEWGP = await generator.GenerateEightWeeks(
  packageId
);         


// The callee 


GenerateEightWeeks = async packageId => {

   let weekPromises = [];
   // A lot of code , eventually we have array of promises "weekPromises" with data

    await Promise.all(weekPromises)
      .then(success => {

        const numberOfZeros = success.filter(x => {
          return x == 0;
        }).length;
        const numberOfOnes = success.filter(x => {
          return x == 1;
        }).length;

        console.log(
          `Before going back to Leads : Zeros : ${numberOfZeros} , Ones : ${numberOfOnes}`
        );
        return {
          zeros: numberOfZeros,
          ones: numberOfOnes
        };
      })
       .catch(failed => {            
        return {
          zeros: 1,
          ones: 0
        };
      });


}

问题是returnValueEWGP 总是未定义

如何将数据返回给调用代码?

【问题讨论】:

  • 你能分享一下console.log的输出吗?
  • 不要使用thenawaitPromise.all 的返回值,然后在那里对结果数组做一些事情。

标签: javascript node.js ecmascript-6 promise es6-promise


【解决方案1】:

你不返回任何真正尝试,

return await Promise.all(weekPromises)
      .then(success => {

        const numberOfZeros = success.filter(x => {
          return x == 0;
        }).length;
        const numberOfOnes = success.filter(x => {
          return x == 1;
        }).length;

        console.log(
          `Before going back to Leads : Zeros : ${numberOfZeros} , Ones : ${numberOfOnes}`
        );
        return {
          zeros: numberOfZeros,
          ones: numberOfOnes
        };
      })
       .catch(failed => {            
        return {
          zeros: 1,
          ones: 0
        };
      });

【讨论】:

    【解决方案2】:

    您需要从GenerateEightWeeks 返回一个值。在解决所有承诺后,您当前正在隐式返回 undefined。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-12
      • 2019-04-18
      • 1970-01-01
      • 2011-07-26
      • 2019-04-11
      • 2020-08-06
      相关资源
      最近更新 更多