所有 JavaScript 回呼都是非同步的嗎?
與普遍看法相反,並非所有 JavaScript 回呼都是非同步的。例如,Array#sort 和 String#replace 中使用的回呼是同步執行的。
非同步回呼
非同步回調是稍後執行的回調,允許其他程式碼同時運作。通常,非同步回呼涉及外部資源請求(例如 jQuery AJAX 呼叫)。
jQuery AJAX 呼叫
jQuery AJAX 函數可以是同步的也可以是非同步的,取決於「非同步」標誌設定。然而,瀏覽器通常預設對 XMLHttpRequest 物件進行非同步操作(在 jQuery AJAX 中使用)。
Node.js 中的非同步
在Node.js 中,非同步是透過以下方式引入的特定函數,例如檔案I/O、process.nextTick、 setTimeout 和setInterval。不支援這些函數之外的非同步操作。
建立非同步函數
在ECMAScript 6 之前,JavaScript 中的非同步函數依賴主機提供的函數(例如,nextTick Node.js、瀏覽器中的setTimeout )。
ECMAScript 6 Promises
ECMAScript 6 引入了 Promise 作為非同步程式設計的語言層級概念。附加到 Promise 的回調(透過 then 或 catch)總是會非同步調用,即使 Promise 在附加時已經解決。
因此,確保非同步回呼執行的最佳方法是使用 Promise 而不是直接使用 Promise回調。
以上是JavaScript 回呼總是異步的嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!