IonicプラットフォームのSQLStorageを使用しています。 remove関数は約束を返します。私のコードでは、複数の値を削除する必要があります。これらがすべて終了したら、私はいくつかのコードを実行する必要があります。Angular2は複数の約束が完了するのを待つ
これらをすべて待ってから、コールバック関数を実行するにはどうすればよいですか?
コード:
removeAll() {
this.storage.remove(key1);
this.storage.remove(key2);
this.storage.remove(key3);
}
ネスト私はまともな解決策を探していますように、すべてが悪い習慣です:)
removeAll() {
return this.storage.remove(key1).then(() => {
this.storage.remove(key2).then(() => {
this.storage.remove(key3);
});
});
};
これらの約束が拒否された場合、 'Promise.all'は直ちに拒否され(残りが終了しているかどうかにかかわらず)、' then'はスキップされます。 'doSomething()'を成功させるか失敗するかを実行する必要がある場合は、 'Promise.resolve()'を返すために個々に 'catch 'する必要があります。 –
'Promise.all()'を使うと、1つずつ、またはすべてを一度に実行するのですか? – Robouste
すべての呼び出しは直ちに実行され、 'Promise.all()'は完了する前にこれらの約束が完了するのを待ちます。これは 'Promise.all'機能ではありません。このコード 'Promise.all([ this.storage.remove(key1)、' ...]); '' this.storage.remove(key1) 'が呼び出され、戻り値(' Promise' )が 'Promise.all(...)'に渡される配列に追加されます。 –