首頁 >web前端 >js教程 >如何在 JavaScript 頂層正確執行非同步程式碼?

如何在 JavaScript 頂層正確執行非同步程式碼?

DDD
DDD原創
2024-12-13 06:44:19219瀏覽

How Do I Properly Execute Asynchronous Code at the Top Level in JavaScript?

非同步程式碼的頂部執行

在非同步程式設計中,async/await 功能可讓您在同步和非同步任務之間無縫切換。然而,在頂層執行非同步程式碼時,必須考慮一些因素。

說明

當你定義一個非同步函數時,它會回傳一個 Promise。當您在頂層呼叫此函數時,它會立即傳回 Promise,而不是解析的值。這就是為什麼你的控制台在執行非同步任務之前輸出 Promise 物件。

要解決這個問題,你有幾個選項:

1。頂級等待(ES2022提案)

在現代環境中,您可以在模組中使用頂級等待。這允許您直接在模組範圍內等待 Promise。

const text = await main();
console.log(text); // Logs the resolved value

2.具有未處理拒絕的頂級非同步函數

您可以定義一個從不拒絕的頂層非同步函數。這可以防止未處理的拒絕錯誤,但不會明確處理錯誤。

(async () => {
  try {
    const text = await main();
    console.log(text); // Logs the resolved value
  } catch (e) {
    // Error handling (optional)
  }
})();

3. then() 和catch()

如果以上選項都不合適,可以使用Promise 的then() 和catch() 方法來處理結果。

main()
  .then((text) => {
    console.log(text); // Logs the resolved value
  })
  .catch((err) => {
    // Error handling
  });

注意:在所有情況下,正確處理拒絕以防止未處理的拒絕錯誤非常重要。

以上是如何在 JavaScript 頂層正確執行非同步程式碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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