2017-03-22 12 views
1

これはReact-Nativeでやっていることです。非同期関数がfirebaseを呼び出しています。React-Nativeで非同期関数内で非同期関数を呼び出す - Firebase

async functionOne() { 
    asyncStuffHappens 
} 

functionTwo() { 
    this.functionOne(); 
} 

this.functionOne();は未定義です。他の関数から非同期関数を呼び出す方法がわかりません。このよう

+0

この2つの機能はどこにありますか?コンポーネントの中に?これは何に縛られるべきですか? –

+0

これはコンポーネント内に存在します。 'functionTwo'はTouchableOpacityのonPressイベントハンドラから呼び出されています。私はonPressの中で関数を呼び出したときに 'this'を正しくバインドして問題を解決しました。この場合、IFFEは必要ありません。 – wvicioso

答えて

0

Like @lonesomedayは、this.functionOne()が私に必要です。私の問題は、私がそれを呼び出すTouchableOpacityのonPressに正しく綴じ込めていなかったことです。this

3

は:

async functionOne() { 
    asyncStuffHappens 
} 

functionTwo() { 
    (async() => { 
     await this.functionOne(); 
    })(); 
} 

これはIFFE (Immediately-invoked function expression)と呼ばれています。それが作成された直後に実行される関数です

+0

ここでは、戻り値が使用されないため、これはまったく必要ありません。 'this.functionOne()'だけが必要です。 – lonesomeday

+0

提供されたコードですべてが表示されるわけではありません。私は、値が返されるか、非同期の後に別のアクションを実行する必要があると推測しています。それ以外の場合は、この質問をしません。 –

+0

これは良い解決策かもしれません。 IIAFEは通常は必要ありません。 – lonesomeday

関連する問題