为了账号安全,请及时绑定邮箱和手机立即绑定

Promise.all 后的返回值

Promise.all 后的返回值

侃侃无极 2021-08-20 16:18:52
如何在 Promise.all 之后从 renderRedirect 函数返回值?这是我的派遣行动: this.props.getChildrens(), this.props.getTeachers(), this.props.getTeachers()渲染重定向功能:renderRedirect = async () => {   Promise.all([     this.props.getChildrens(),     this.props.getTeachers(),     this.props.getTeachers()    ]).then(() => {      return 'test';    });  };在我的组件中,我的 console.logrenderRedirect函数是输出:console.log(this.renderRedirect())Promise {<resolved>: undefined}
查看完整描述

2 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

你忘了回来Promise.all。


renderRedirect = () => {

   // added return keyword

   return Promise.all([

     this.props.getChildrens(),

     this.props.getTeachers(),

     this.props.getTeachers()

    ]).then(() => {

      return 'test';

    });

  };

但是你也应该注意到console.log(this.renderRedirect())仍然不起作用,因为你需要await为承诺的结果。


你应该做这样的事情:


let result = await this.renderRedirect()

console.log(result)


查看完整回答
反对 回复 2021-08-20
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

三个问题:

  1. 您需要return调用Promise.allthen处理程序的结果,或者使用简洁的函数体,以便隐式返回。

  2. 如果您要 make renderRedirect async,则使用await.

  3. 您正在从renderRedirect. 您需要使用该承诺,而不是输出它。

要处理 #1 和 #2,要么:

// Concise arrow function, not `async`

renderRedirect = () => Promise.all([

     this.props.getChildrens(),

     this.props.getTeachers(),

     this.props.getTeachers()

    ]).then(() => {

      return 'test';

    });


// `async` function

renderRedirect = async () => {

    await Promise.all([

     this.props.getChildrens(),

     this.props.getTeachers(),

     this.props.getTeachers()

    ]);

    return 'test';

};

处理#3:


this.renderRedirect().then(result => {

    console.log(result);

});

或者如果该代码在async函数中:


console.log(await this.renderRedirect());


查看完整回答
反对 回复 2021-08-20
  • 2 回答
  • 0 关注
  • 1337 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信