2016-10-13 2 views
0

에 AsyncStorage.getItem()에서 가져온 값을 반환 나는 OrderHistory 작업 모델을했다 :가 기본 반작용 : 기능

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 함수를 이동하려면 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}

을 인쇄?

+0

그것은 여전히 ​​비동기 코드, 당신은 처리해야합니다 : 그것은 좋네요 확인하고 .then 콜백 지옥 제거하기 위해, 당신은 여전히 ​​Promise와 "기다리고"완성 걸리는 async/await 구문을 사용할 수 있습니다 약속을하고'.then'을 사용하여 결과를 얻으십시오. 코드를 동기식으로 보이게하려면 곧 비동기식/기다리기 JS 기능을 살펴볼 수 있습니다. [여기서는 반응 네이티브에서 QA가 있습니다.] (http://stackoverflow.com/questions/34016685/how-to -use-await-key-on-react-native) –

답변

0

AsyncStorage 메서드는 처리해야 할 Promise을 반환합니다.

static async ordersPlaced() { 
    await AsyncStorage.setItem("myKey", "My value here"); 
    const value = await AsyncStorage.getItem("myKey"); 
    //check your value, process it, etc. 
    return value; 
} 
관련 문제