首頁  >  文章  >  web前端  >  如何在 JavaScript 中使用帶有回呼的非同步/等待?

如何在 JavaScript 中使用帶有回呼的非同步/等待?

Linda Hamilton
Linda Hamilton原創
2024-10-30 11:11:05555瀏覽

 How to Utilize Async/Await with Callbacks in JavaScript?

等待回呼解析

使用簡單回呼的場景,如下例:

test() {
  api.on( 'someEvent', function( response ) {
    return response;
  });
}

將此函數轉換為使用async/await 需要稍作修改。假設「someEvent」保證只被呼叫一次,「test」函數可以轉換成一個等待回調執行的非同步函數:

async test() {
  return await api.on( 'someEvent' );
}

但是,async/await本身並沒有能力直接處理回調。為了彌補這一差距,必須重新設計 api.on() 以返回 Promise。這是一個範例:

function apiOn(event) {
  return new Promise(resolve => {
    api.on(event, response => resolve(response));
  });
}

經過此修改,「測試」函數現在可以編寫為:

async function test() {
  return await apiOn( 'someEvent' ); 
}

請注意,在此上下文中,await 關鍵字本質上是可選的,因為任何一種方法仍然會導致返回Promise。

最後,重要的是要記住非同步函數本身會傳回 Promise。因此,直接存取“test()”傳回的值是不可能的。相反,需要處理返回的 Promise:

async function whatever() {
  // snip
  const response = await test();
  // use response here
  // snip
}

以上是如何在 JavaScript 中使用帶有回呼的非同步/等待?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn