Async/Await を使用してコールバックの実行を一時停止する
コールバックを処理する場合、コールバックが終了するまで関数の実行を一時停止することが望ましい場合があります。値を返しました。同期プログラミングでは、これは join() などのブロッキング メカニズムを使用して実現できます。ただし、非同期プログラミングでは、これは多くの場合望ましくありません。
確実に 1 回呼び出されるコールバック関数があり、async/await を使用するように次の関数を変更するとします。
test() { api.on( 'someEvent', function( response ) { return response; }); }
目標は、次のようにコールバックの実行を待機する非同期関数に変換することです:
async test() { return await api.on( 'someEvent' ); }
API によって返される Promise が必要なため、Async/await だけではこれを達成できません。 。の上()。これを解決するには、Promise を返す関数でコールバックをラップします。
function apiOn(event) { return new Promise(resolve => { api.on(event, response => resolve(response)); }); }
次に、test() を非同期関数として書き換えます。
async function test() { return await apiOn( 'someEvent' ); // await is optional here (returns a Promise) }
async であることに注意してください。関数はそれ自体も Promise を返します。 test() から実際の結果を取得するには、外部の非同期関数で待機する必要があります。
async function whatever() { const response = await test(); // use response here }
Promise ラッピング関数を活用することで、async/await を使用して、関数の実行を効果的に一時停止できます。コールバックが値を返すまで test() を実行します。
以上がJavaScript で Async/Await を使用してコールバックの実行を一時停止する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。