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 後面的程式碼不會阻塞。
以上是JavaScript 回呼何時異步?的詳細內容。更多資訊請關注PHP中文網其他相關文章!