2017-09-28 11 views
1

おそらく、かなり愚かな質問ですが、ここに行く方法は何ですか? 私は、他の関数からの約束を実現する関数を作りたいと思いますか?機能の達成を約束してください

getStorageData(){ 
    var result = [] 
    this.storage.get('ipaddress').then(ip => { 
     result[0] = ip 
     this.storage.get('timestamp').then(timestamp => { 
      result[1] = timestamp 
      console.log(result) 
    })}) 
    return result 
} 

コンソールの出力は正常ですが、定義された関数の戻り値は空の​​配列です。コンソールの出力を自分の関数の戻り値にするにはどうすればよいですか?

ありがとうございます!

答えて

0

これはasyncrounous機能は次のとおりです。

this.storage.get('timestamp').then(timestamp => { 
    result[1] = timestamp 
    console.log(result) 
} 

スクリプトはconsole.log(result)に取得するためのいくつかの時間を必要とします。したがって、結果は返す場所に定義されていません。

あなたはこのような.then()関数の関数本体でそれを返すことができます:

this.storage.get('timestamp').then(timestamp => { 
    result[1] = timestamp; 
    console.log(result); 
    return result; 
} 

注:コマンドの最後に;を忘れないでください。

関連する問題