2016-10-13 8 views
0

に私はOrderHistory作業モデルがあります:はネイティブリアクト:AsyncStorage.getItem(によってフェッチされた値を返す)関数

showConfirmOrderModal() { 
    alert("booya"); 
    } 

    onBuyButtonPress() { 
    OrderHistory.ordersPlaced().then((amount) => { 
     switch(amount) { 
     case null: 
      this.showConfirmOrderModal(); 
      break; 
     default: 
      this.addToCart(this.state.currentOrder); 
     } 
    }); 
    } 

があります:

import { AsyncStorage } from 'react-native'; 

const tokenKey = "orderHistory"; 

export default class OrderHistory extends Object { 
    static ordersPlaced() { 
    return AsyncStorage.getItem(tokenKey); 
    } 
} 

、私のコンポーネント内に私はこれを持っていますOrderHistoryモデルのAsyncStorage.getItem()によって返されたPromiseを解決するために.then関数を移動する方法はありますか?私はこのような何かをしようとしたが、それはうまくいきませんでした:

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}

を出力しますか?

+0

を、あなたが対処する必要がありますプロミスと結果を得るために '.then'を使います。あなたはコードを同期させるために、今後のasync/await JS機能を見てみることができます(ここでは、反応ネイティブのQAです)。(http://stackoverflow.com/questions/34016685/how-to -use-await-key-on-react-native) –

答えて

0

AsyncStorageメソッドは、処理する必要があるPromiseを返します。それがよりよいと.thenコールバック地獄を取り除くようにするには、あなたはまだPromiseを取り、その完了「待って」async/await構文を使用することができます:それはまだ非同期コードである

static async ordersPlaced() { 
    await AsyncStorage.setItem("myKey", "My value here"); 
    const value = await AsyncStorage.getItem("myKey"); 
    //check your value, process it, etc. 
    return value; 
} 
関連する問題