2016-04-11 2 views
1

Я получил синтаксическую ошибку в своем коде.Как использовать AsyncStorage.setItem в обратном вызове fetch?

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

+0

добавить асинхронный модификатор – carlosdubusm

+0

Почему вы до сих пор используете 'затем' /' catch' и обратные вызовы, когда у вас есть '' async'/await' ??? – Bergi

+0

@Bergi Я добавил их, когда получил синтаксическую ошибку для этого '' жду AsyncStorage.setItem''. Не знал, что '' async'' следует добавить к объявлению функции обратного вызова. – YSJ

ответ

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

Я вижу. Большое спасибо. – YSJ

Смежные вопросы