React-Native асинхронная функция неожиданный идентификатор _this2 - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть эта функция, которую я хочу дождаться результата и затем использовать:

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

Я надеваюНе вижу никаких проблем с синтаксисом, и приложение компилируется, но при запуске оно просто выдает следующую ошибку:

образ ошибки

другой странный случай, если я перехожупри удаленной отладке на этом экране я получаю другую ошибку: ошибка 2

здесь говорится, что await не находится в асинхронной функции, но это так, и я не получаю синтаксическую ошибку в моемредактор или в метро-бандлер.

1 Ответ

0 голосов
/ 06 декабря 2018

Есть несколько вещей, которые вы могли пропустить.Рассмотрим эти изменения.Хотя у меня не было возможности проверить это, я уверен, что это сработает или, по крайней мере, поставит вас на правильный путь.

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

}
...