2016-05-09 2 views
6

Я использую AsyncStorage в своем приложении React Native для хранения информации о пользователе. Функция getItem() является асинхронной и требует от меня выполнить обратный вызов, когда я хочу загрузить данные из системы хранения.Ожидание AsyncStorage.getItem()

AsyncStorage.getItem("phoneNumber").then((value) => { 
    this.setState({"phoneNumber": value}); 
}).done(); 

Поскольку извлечение значения из хранилища занимает немного времени, я хотел бы дождаться завершения операции до продолжения выполнения.

Можно ли загружать данные способом, который не является асинхронным? Если нет, есть ли простой способ подождать, пока вызов getItem() будет завершен, чтобы продолжить выполнение?

ответ

10

Вы можете попробовать либо добавить после этого после вашего getItem.

AsyncStorage.getItem("phoneNumber").then((value) => { 
    this.setState({"phoneNumber": value}); 
}) 
.then(res => { 
    //do something else 
}); 

Или используйте ждать ждать асинхронной операции, чтобы закончить

var value = await AsyncStorage.getItem(STORAGE_KEY); 
//use value to do something else. 
+1

Ошибка синтаксиса: Ожидание - это зарезервированное слово. – mixdev

+2

Добавить ключевое слово 'async' в функцию определения функции, используя 'await' –

+0

Где можно называть это на странице загрузки? – Dhrupal

2

попробовать этот вариант , и вы не получите «
Синтаксическая ошибка: Await зарезервированное слово»

async getData(){ 
    return await AsyncStorage.getItem("@App:KEY"); 


}