如何在fetch回调中使用AsyncStorage.setItem?

时间:2016-04-11 20:24:44

标签: javascript react-native fetch-api

我的代码中出现语法错误。

  async getJSON() {
    await fetch(url)
      .then((response) => response.text())
      .then((responseText) => {
        await AsyncStorage.setItem(STORAGE_KEY, responseText);        
      })
      .catch((error) => {
        console.warn(error);
      });
  },

错误是await AsyncStorage.setItem(STORAGE_KEY, responseText);上的意外令牌 我想它正在抱怨await

1 个答案:

答案 0 :(得分:1)

每一个等待你都需要一个异步。

 async getJSON() {
    await fetch(url)
      .then((response) => response.text())
      .then(async (responseText) => { // <-- add async here
        await AsyncStorage.setItem(STORAGE_KEY, responseText);        
      })
      .catch((error) => {
        console.warn(error);
      });
  },

另外......异步/等待的目的是使代码在实际异步时看起来同步。您可以像这样重写上面的代码:

async getJSON() {
    try {
      var response = await fetch(url);
      var responseText = response.text();
      await AsyncStorage.setItem(STORAGE_KEY, responseText);
    } catch(error) {
      console.warn(error);
    }
}