2016-05-07 5 views
0

は私のコードが...私は私が待っています使用しているので、urlstartundefinedではないであろうことを期待していた私のgetOrder方法ではネイティブリアクト - 非同期/待つのクラスに取り組んでいない期待通りここ

'use strict'; 
var React = require('react-native'); 
var { 
    AsyncStorage 
} = React; 



exports.buildUrl = function(){ 
    var test = new Sales(); 
    test.getOrder(); 
} 

class queryBuilder{ 

    constructor() { 

    } 

    getUrl(){ 
    AsyncStorage.getItem('auth').then((value) => { 
     var auth = JSON.parse(value); 
     var store = auth.url; 
     console.log('store = ' + store); 
     return store; 
    }); 
    } 

} 

class Sales extends queryBuilder{ 

    async getOrder(){ 
    console.log('get order hit'); 
    try{ 
     var urlstart = await this.getUrl(); 
    } catch(e) { 
     console.log('ERROR') 
     console.log(e); 
    } 
    console.log('URL BELOW'); 
    console.log(urlstart); 
    console.log('URL ABOVE'); 
    } 

} 

です。

getUrl()の方法は、私のコンソールで最後に返すものです。

多分それは土曜日の気分です、どんな助けも大いに感謝します!

+0

は、単純な 'のgetURL非同期()それをしないのはなぜ{(AsyncStorage.getItem( '認証')を待つ)JSON.parseを返すURL。 } '? – Bergi

答えて

0

これを自分で解決しました。 AsyncAwaitは、私が呼び出している関数で返される約束が必要です。 私はそれ以上sugestionsは依然として非常に高く評価

getUrl(){ 
    return new Promise(function(resolve, reject) { 
     AsyncStorage.getItem('auth').then((value) => { 
     var auth = JSON.parse(value); 
     var store = auth.url; 
     console.log('store = ' + store); 
     resolve(store); 
     }); 
    } 

..以下のようgetUrl()方法を変更しました。より良い更新

、ユーリ

のおかげ
getUrl(){ return AsyncStorage.getItem('auth').then(value => JSON.parse(value).url) } 
+0

'getUrl(){ 戻り値AsyncStorage.getItem( 'auth')。then(value => JSON.parse(value).url) }'十分である必要があります –

+0

'function'自体が、私は間違った範囲を持っていただけですか? –

+1

あなたはすでに約束をしているので、手動で作成する必要はありません。簡単な返品で十分です。 –

関連する問題