React-Native异步函数意外标识符_this2

时间:2018-12-06 04:39:27

标签: react-native async-await remote-debugging

我具有要等待的结果,然后使用它的功能:

getUserId = () => {
    fetch("https://www.dummysite.com/mobile/person-id", {
      credentials: "include",
      method: "GET",
      headers: {
        Cookie: this.state.auth_token_res
      }
    }).then(res => {
      let id_obj = JSON.parse(res._bodyText);
      console.log("parsed json", id_obj);
      return id_obj.data;
    });
  };

我想在此功能中使用它:

async sendID() {
        let user_id = await this.getUserId();
        console.log(user_id);
        OneSignal.sendTags({
          user_id: user_id
        })
          .then(function(tagsSent) {
            // Callback called when tags have finished sending
            console.log("tag is set: ", tagsSent);
          })
          .catch(err => {
            console.log("error", err);
          });
  }

我没有看到任何语法问题,并且该应用程序得以编译,但是当它启动时,它只是如何处理此错误:

error image

另一个奇怪的是,如果我在此屏幕上打开远程调试,则会收到另一个错误: error 2

这里说await不是在异步函数中,而是在异步函数中,并且在编辑器或Metro bundler中没有语法错误。

1 个答案:

答案 0 :(得分:1)

您可能会错过一些事情。考虑这些变化。尽管我没有机会进行测试,但我相信它会起作用,或者至少会使您步入正轨。

getUserId = () => {
  // return fetch in order to await
  return fetch("https://www.dummysite.com/mobile/person-id", {
    credentials: "include",
    method: "GET",
    headers: {
      Cookie: this.state.auth_token_res
    }
  }).then(res => res.json());
};

// make this an arrow function
sendID = async () => {
  try {
    let user_id = await this.getUserId();
    // after printing then decide what to do here;
    console.log(user_id);

    const tagsSent = await OneSignal.sendTags({
      user_id: user_id
    });
    console.log(tagsSent);

  } catch (err) {
    console.log(err);
  }

}