JS之回撥函式(callback)

newObject()=>error發表於2020-10-05

1.什麼是回撥函式?

  -- 簡單點說,一個函式被作為引數傳遞給另一個函式(在這裡我們把另一個函式叫做“otherFunction”),回撥函式在otherFunction中被呼叫。

  --可以是匿名函式也可以是命名函式

2.回撥函式的特點

  (1)自己定義的函式

  (2)你沒有呼叫

  (3)最終它執行了

3.常見的回撥函式

  (1)DOM事件回撥函式

    

 

 

 

 

  (2)定時器回撥函式

 

 

 

 

  (3)ajax請求回撥函式

    略。(後續相應內容補充)

  (4)生命週期回撥函式  

    略。(後續相應內容補充)

4.擴充

  --程式碼分類

    (1)初始化程式碼:一般的程式碼,包括設定定時器,繫結監聽,傳送ajax請求……

    (2)回撥程式碼:回撥函式的程式碼

  JavaScript引擎,在執行程式碼時,先執行初始化程式碼,等到初始化程式碼全部執行結束時,再執行回撥程式碼。

   

  執行結果: 

  

 

  重上述案例中,我們可以 看到回撥函式不管在整個程式碼的什麼位置,它都要比初始化程式碼執行完後才會執行。

  上述程式碼執行流程:前兩程式碼開啟了定時器,此時JavaScript引擎將回撥函式,和設定的時間交給定時器管理模組(事件管理模組),待到事件觸發時,回撥函式加入到回撥佇列中(callback queue),此時處於待處理狀態。如果初始化程式碼全部執行結束,才會迴圈遍歷回撥佇列中的回撥函式。在上述程式碼中先加入佇列的是延時時間為0ms的定時器,然後才是2000ms的定時器,由於佇列的特性是先進先出,所以兩個定時器間,先執行第二個定時器,在執行第一個定時器。

(此處涉及到時間迴圈模型,後續內容會補充,這裡我們只需要大致瞭解回撥函式是什麼時候執行的)

 

相關文章