在 Javascript 非同步中,await 提供了更具可讀性和「更乾淨」的方式來處理 Promise。 (您可以在這裡閱讀有關承諾的內容)。
首先讓我們來了解一下文法。
非同步關鍵字:
我們有 async 關鍵字,當我們宣告一個函數是異步的時,我們知道這個函數總是會回傳一個 Promise。即使你直接傳回一個值,JavaScript 也會自動包裝在一個 Promise 中。
等待關鍵字:
首先我們必須知道,如果我們想使用await關鍵字,我們只能在非同步函數中使用它。
這個await關鍵字暫停非同步函數的執行,直到promise被解決或拒絕。
讓我們來看一個非常簡單的 async/await 範例,之後我們將使用一個更大的範例來比較完整的 Promise 方法(沒有 async/await)與 async/await 方法。
非同步/等待的簡單範例:
讓我們打破它:
- response.ok:此屬性檢查回應的HTTP狀態代碼是否在成功範圍(200-299)內。
- response.json():如果回應成功,函數會解析伺服器傳回的JSON資料。
- response.status:這為您提供了確切的狀態代碼,例如 404(未找到)或 500(伺服器錯誤)。
現在我們了解了 async/await 的基礎知識,讓我們更深入地了解另一個帶有 Promise 的範例。
我們有 3 個函數,每個函數都傳回一個 Promise:
(這些功能的解釋可以在這裡找到)
現在,我們可以使用than()和catch()來呼叫這些函數:
此程式碼是 JavaScript 中 Promise 鏈的範例,其中非同步操作(如獲取資料)按順序執行,並且每一步都依賴上一步的結果。
一旦 getOrders(user.id) 解析,它將訂單陣列傳遞給下一個 .then() 內的回呼函數。
訂單已記錄到控制台。
然後,呼叫 getOrderDetails(orders[1]),它會取得訂單陣列中的第二個訂單(假設它存在)。
此函數傳回一個 promise,該承諾在獲取訂單詳細資訊時解析。
返回了 getOrderDetails() 的 Promise,因此下一個 .then() 等待這個 Promise 解決。
結果:
異步/等待方法:
此程式碼是如何在 JavaScript 中使用 async/await 的範例,與 Promise 鏈方法相比,以更具可讀性的方式處理非同步操作。
說明:
1.非同步函數asyncAwaitExample():
- 此函數被標記為非同步,這表示它將始終
返回一個承諾。它允許在其中使用await 關鍵字。
- 在函數內部,非同步程式碼的編寫方式與同步程式碼的外觀和行為類似,從而提高了可讀性。
- 嘗試 { ... } catch (錯誤) { ... }:
- try-catch 區塊用於處理錯誤。非同步操作執行過程中發生的任何錯誤都會被捕獲在 catch 區塊中。
- const user = wait getUser(1);:
- await 關鍵字暫停函數的執行,直到 getUser(1) 承諾解決。 - 一旦 getUser Promise 解析,結果(使用者物件)將儲存在使用者變數中 -如果promise被拒絕(即發生錯誤),則跳到catch區塊來處理錯誤 -const Order、const 詳細資料的操作相同
4.catch (error) { console.log("錯誤是:", error); }:
- 如果任何非同步函數(getUser、getOrders 或 getOrderDetails)拋出錯誤或其 Promise 被拒絕,執行將跳到 catch 區塊。
結果:
非同步/等待的好處:
1.可讀性:非同步程式碼看起來像同步程式碼,減少了巢狀 .then() 區塊或處理回調地獄的需要。
2.錯誤處理:使用簡單的 try-catch 區塊,您可以比使用具有 Promise 的 .catch() 更直接地處理錯誤。
3.可維護性:隨著邏輯變得越來越複雜,使用 async/await 比使用 Promise 鏈更容易遵循和維護。
以上是JavaScript 中的非同步、等待的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript在瀏覽器和Node.js環境中運行,依賴JavaScript引擎解析和執行代碼。 1)解析階段生成抽象語法樹(AST);2)編譯階段將AST轉換為字節碼或機器碼;3)執行階段執行編譯後的代碼。

Python和JavaScript的未來趨勢包括:1.Python將鞏固在科學計算和AI領域的地位,2.JavaScript將推動Web技術發展,3.跨平台開發將成為熱門,4.性能優化將是重點。兩者都將繼續在各自領域擴展應用場景,並在性能上有更多突破。

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

是的,JavaScript的引擎核心是用C語言編寫的。 1)C語言提供了高效性能和底層控制,適合JavaScript引擎的開發。 2)以V8引擎為例,其核心用C 編寫,結合了C的效率和麵向對象特性。 3)JavaScript引擎的工作原理包括解析、編譯和執行,C語言在這些過程中發揮關鍵作用。

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3漢化版
中文版,非常好用

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中