JavaScript 回呼:是否非同步?
JavaScript 回呼並非普遍非同步。在某些場景下,例如您提供的 addOne 和 simpleMap 函數的範例,程式碼會同步執行。
瀏覽器中的非同步 JavaScript
基於回呼的 AJAX 函數jQuery 中通常是異步的,因為它們涉及 XHR (XMLHttpRequest) 請求。預設情況下,瀏覽器中的 XHR 請求是非同步的,允許在處理請求時持續執行腳本。
Node.js 中的非同步JavaScript
在Node.js 中,異步行為通常由輸入/輸出(I/O) 操作引起,例如檔案I/ O、process.nextTick、setTimeout 和setInterval。由於與資料庫互動涉及底層 I/O 操作,MongoDB/Mongoose 的基於回呼的資料庫呼叫是非同步的。
預定的非同步情況
非同步性通常是根深蒂固在環境中。在瀏覽器中,與 XHR 請求關聯的回呼函數本質上是非同步的。在 Node.js 中,與 I/O 操作相關的回呼同樣是異步的。
自訂非同步函數
無需僅依賴特定環境函數,即可實現異步行為透過利用 ES6 承諾。 Promise 提供了用於定義非同步操作的語言層級機制。附加到 Promise 的回調函數(透過 then 和 catch)始終非同步執行,確保 Promise 後面的程式碼不會阻塞。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3