如何在React函数中使用async await调用函数,所以我可以按顺序获取结果

时间:2019-02-28 08:14:03

标签: javascript reactjs

所以我有这个函数,试图调用多个函数以从每个函数中获取所有数据,我希望依次调用每个函数。问题是我仍然得到的结果是getAll()中的每个函数都没有顺序执行。有人知道应该怎么做吗?

_getALL = async () => {
        await this.getA();
        await this.getB();
        await this.getC();
        await this.getD();
      }

功能之一:

getA() {
    getUserA.list()
       .then((res) => {
         const responseData = res.data;
         const Datas = responseData.map(b => ({
           key: b.id,
           name: b.name,
         }));
         this.setState({ users: Datas });
       })
       .catch((err) => {
         console.log( err);
       });
  }

我刚刚开始学习如何使用此异步/等待方法。任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

我不确定,但是如果调用此函数时函数没有返回值,则此函数将等待任何时间,因此它将继续执行脚本。 尝试退货。

答案 1 :(得分:0)

await仅适用于返回承诺的函数。您的getA函数当前不返回任何内容,即undefined。您可以通过添加return来解决此问题,如下所示:

getA() {
    return getUserA.list()
       .then((res) => {
         const responseData = res.data;
         const Datas = responseData.map(b => ({
           key: b.id,
           name: b.name,
         }));
         this.setState({ users: Datas });
       })
       .catch((err) => {
         console.log( err);
       });
  }