setTimeout
/ は関数呼び出しの前に遅延を追加しますが、 async
/await
は約束の上にある構文糖衣であり、呼び出しが完了した後に実行するコードをチェーンする方法であるため、それらは異なります。
setTimeout にはひどいエラー処理特性があるため、すべてのコードで次のことをお勧めします。
let wait = ms => new Promise(resolve => setTimeout(resolve, ms));
setTimeout
二度と直接電話しないでください。
コードは次のようになります。
let foo = async () => {
await wait(2000);
await this._doSomething();
}
終了するまでfoo
待機しdoSomething
ます。これは通常は望ましいことですが、コンテキストがなければ、何を望んでいるのかを知るのは困難です。doSomething
他のコードと並行して実行する場合は、次のことをお勧めします。
async () => { await Promise.all([foo(), this._otherCode()]); };
同じ場所でエラーを結合してキャプチャします。
本当に起動して忘れ_doSomething
て、それを待たないつもりだった場合は、を失う可能性がありますが、await
エラーを試行/キャッチする必要があります。
async () => {
let spinoff = async () => { try { await foo(); } catch (e) { console.log(e); } };
spinoff(); // no await!
}
ただし、そのパターンは微妙で見落としやすいため、お勧めしません。