首頁 > web前端 > js教程 > 如何在 JavaScript 中使用 Async/Await 暫停回呼的執行?

如何在 JavaScript 中使用 Async/Await 暫停回呼的執行?

Susan Sarandon
發布: 2024-10-29 14:16:02
原創
512 人瀏覽過

How to Use Async/Await to Pause Execution for Callbacks in JavaScript?

使用Async/Await 暫停回呼的執行

處理回呼時,可能需要暫停函數的執行,直到回呼發生已傳回一個值。在同步編程中,這可以透過像 join() 這樣的阻塞機制來實現。然而,在非同步編程中,這通常是不可取的。

假設你有一個保證只調用一次的回調函數,並且你想修改以下函數以使用async/await:

test() {
  api.on( 'someEvent', function( response ) {
    return response;
  });
}
登入後複製

目標是將其轉換為等待回調執行的非同步函數,如下所示:

async test() {
  return await api.on( 'someEvent' );
}
登入後複製

單獨使用Async/await 無法實現此目的,因為它需要api 傳回Promise 。在()。為了解決這個問題,我們可以將回調包裝在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板