1.什麼是回撥函式?
-- 簡單點說,一個函式被作為引數傳遞給另一個函式(在這裡我們把另一個函式叫做“otherFunction”),回撥函式在otherFunction中被呼叫。
--可以是匿名函式也可以是命名函式
2.回撥函式的特點
(1)自己定義的函式
(2)你沒有呼叫
(3)最終它執行了
3.常見的回撥函式
(1)DOM事件回撥函式
(2)定時器回撥函式
(3)ajax請求回撥函式
略。(後續相應內容補充)
(4)生命週期回撥函式
略。(後續相應內容補充)
4.擴充
--程式碼分類
(1)初始化程式碼:一般的程式碼,包括設定定時器,繫結監聽,傳送ajax請求……
(2)回撥程式碼:回撥函式的程式碼
JavaScript引擎,在執行程式碼時,先執行初始化程式碼,等到初始化程式碼全部執行結束時,再執行回撥程式碼。
執行結果:
重上述案例中,我們可以 看到回撥函式不管在整個程式碼的什麼位置,它都要比初始化程式碼執行完後才會執行。
上述程式碼執行流程:前兩程式碼開啟了定時器,此時JavaScript引擎將回撥函式,和設定的時間交給定時器管理模組(事件管理模組),待到事件觸發時,回撥函式加入到回撥佇列中(callback queue),此時處於待處理狀態。如果初始化程式碼全部執行結束,才會迴圈遍歷回撥佇列中的回撥函式。在上述程式碼中先加入佇列的是延時時間為0ms的定時器,然後才是2000ms的定時器,由於佇列的特性是先進先出,所以兩個定時器間,先執行第二個定時器,在執行第一個定時器。
(此處涉及到時間迴圈模型,後續內容會補充,這裡我們只需要大致瞭解回撥函式是什麼時候執行的)