承诺:如何将“ Promise.all”的“然后”块中的值返回给调用代码?

请考虑以下情况:

// 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总是未定义

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

huimingchaye 回答:承诺:如何将“ Promise.all”的“然后”块中的值返回给调用代码?

您没有返回任何真正尝试过的东西,

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
        };
      });
,

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

本文链接:https://www.f2er.com/2781458.html

大家都在问