特定のコンポーネントが破棄される前に、データをapi(データベース)に送信する必要があるシナリオがあります。 angle2のライフサイクルで説明されているように、コンポーネントが破棄される前に1つのメソッドが実行され、そのメソッドはngOnDestroy
と呼ばれます。しかし、ドキュメントで指定されているように、それはvoid関数なので、結果が返るのを待つことはありません。ngOnDestroy関数で呼び出されたときにAPI呼び出しが完了するのを待つ方法はありますか?
私の疑問は、ngOnDestroy関数でAPI呼び出しを実行して完了するのを待つ方法です。
私はちょうど更新機能を呼び出すと、それは動作しますが、あるコンポーネントから別のコンポーネントにルーティングするとき、次のコンポーネントが古いデータをロードしている間は最初のコンポーネントのデータはまだ更新されません(リフレッシュしたら新しいデータを取得します)。
updateData(data: any, callback?: Function) {
this.apiService.update(data).then(response => {
callback(response);
}
}
ngOnDestroy() {
this.updateData(this.data);
}
// Maybe i could somehow use callback functionality to postpone execution of ngOnDestroy function
ngOnDestroy() {
this.updateData(this.data, response => {
});
}
またはこのような状況を解決するために、他の方法がある:だから問題は、私は完全に実行して、正しい、更新されたデータをロードする次のコンポーネントに部品の破壊とルーティングを可能にするために、更新機能のために待つことができないということでしょうか?
をしたいareif (working = trueからworking = falseに変更して終了イベントを発行する)。そして、新しいルートで私は働く価値が本当であるかどうかをチェックして、それが完了したときに私に通知するイベントを購読します。そして、私は新しいデータを含むAPIに新しいリクエストをすることができます。ルーティングの前にデータをデータベースに保存するアプリケーション内で、コンポーネントAからコンポーネントBに移動できるため、コンポーネントBに直接アクセスできるためです。 – BoonZ