1. 什么是回調函數?
回調函數就是一個通過函數指針調用的函數。如果你把函數的指針(地址)作為參數傳遞給另一個函數,當這個指針被用為調用它所指向的函數時,我們就說這是回調函數。
在JavaScript中,回調函數具體的定義為:函數A作為參數(函數引用)傳遞到另一個函數B中,並且這個函數B執行函數A。我們就說函數A叫做回調函數。如果沒有名稱(函數表達式),就叫做匿名回調函數。
2. 同步回調和異步回調
(1)同步回調
含義:立即執行,完全執行完了才結束,不會放入回調隊列中
例子:數組遍歷相關的回調函數 / Promise的excutor函數
下面用代碼說明:
const arr = [1, 2, 3, 4, 5] arr.forEach(item => { console.log(item); }) console.log('forEach之后打印');
(2)異步回調
含義:不會立即執行,會放入回調隊列中將來執行
例子:定時器回調 / ajax回調 / Promise的成功|失敗的回調
請看代碼:
setTimeout(() => { console.log('timeout callback'); }, 0) console.log('setTimeout之前');
關於同步回調和異步回調函數的更多相關理解請參考 https://www.cnblogs.com/still-smile/p/12048078.html