я рабочая OrderHistory модель:Реагировать Native: возвращает значение извлекалось AsyncStorage.getItem() в функции
import { AsyncStorage } from 'react-native';
const tokenKey = "orderHistory";
export default class OrderHistory extends Object {
static ordersPlaced() {
return AsyncStorage.getItem(tokenKey);
}
}
и в моем компоненте у меня есть это:
showConfirmOrderModal() {
alert("booya");
}
onBuyButtonPress() {
OrderHistory.ordersPlaced().then((amount) => {
switch(amount) {
case null:
this.showConfirmOrderModal();
break;
default:
this.addToCart(this.state.currentOrder);
}
});
}
Есть способ перемещения функции .then
для решения обещания, возвращенного AsyncStorage.getItem()
внутри модели OrderHistory? Я пытался что-то вроде этого, но это не сработало:
orderhistory:
export default class OrderHistory extends Object {
static async ordersPlaced() {
AsyncStorage.setItem("myKey", "My value here");
return AsyncStorage.getItem("myKey").then((value) => value);
}
}
компонент:
onBuyButtonPress() {
let blah = OrderHistory.ordersPlaced();
console.log(blah);
}
Но что печатает Promise {_45: 0, _81: 0, _65: null, _54: null}
Что я делаю неправильно?
Это еще асинхронный код, вы будете иметь дело с обещание и использовать '. then' для получения результатов. Вы можете взглянуть на предстоящую функцию async/await JS, если вы хотите, чтобы код выглядел синхронно, [здесь есть QA об этом в native-native] (http://stackoverflow.com/questions/34016685/how-to -use-ждать-ключ-слово-на-реагировать родной) –