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

How to use AsyncStorage.setItem in fetch callback?

我的代码出现语法错误。

  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

对于每个等待,您都需要一个异步。

 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/await 的要点是让代码看起来是同步的,而实际上是异步的。您可以像这样重写上面的代码:

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