js 回調(callback)

 首先還是從jquery網站上的英文定義入手: A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.

這是js裏的解釋了,字面上理解下來就是,回調就是一個函數的調用過程。那麼就從理解這個調用過程開始吧。函數a有一個參數,這個參數是個函數b,當函數a執行完以後執行函數b。那麼這個過程就叫回調。

其實中文也很好理解:回調,回調,就是回頭調用的意思。函數a的事先幹完,回頭再調用函數b。

舉個現實的例子:約會結束後你送你女朋友回家,離別時,你肯定會說:“到家了給我發條信息,我很擔心你。”對不,然後你女朋友回家以後還真給你發了條信息。小夥子,你有戲了。

其實這就是一個回調的過程。你留了個函數b(要求女朋友給你發條信息)給你女朋友,然後你女朋友回家,回家的動作是函數a。她必須先回到家以後,函數a的內容執行完了,再執行函數b,然後你就收到一條信息了。

這裏必須清楚一點:函數b是你以參數形式傳給函數a的,那麼函數b就叫回調函數。

 也許有人有疑問了:一定要以參數形式傳過去嗎,我不可以直接在函數a裏面調用函數b嗎?確實可以。求解中。

<解惑:如果你直接在函數a裏調用的話,那麼這個回調函數就被限制死了。但是使用函數做參數就有下面的好處:當你a(b)的時候函數b就成了回調函數,而你還可以a(c)這個時候,函數c就成了回調函數。如果你寫成了function a(){...;b();}就失去了變量的靈活性。>

下面用代碼來證實我的理解。

  1. <html> 
  2.  
  3. <head> 
  4.  
  5. <title>回調函數(callback)</title> 
  6. <script language="javascript" type="text/javascript"> 
  7. function a(callback) 
  8. {    
  9.     alert("我是parent函數a!"); 
  10.     alert("調用回調函數"); 
  11.     callback(); 
  12. function b(){ 
  13. alert("我是回調函數b"); 
  14.  
  15. function c(){ 
  16. alert("我是回調函數c"); 
  17.  
  18.  
  19. function test() 
  20.     a(b); 
  21.    a(c); 
  22.  
  23. </script> 
  24. </head> 
  25.  
  26. <body> 
  27. <h1>學習js回調函數</h1> 
  28. <button onClick=test()>click me</button> 
  29. <p>應該能看到調用了兩個回調函數</p> 
  30. </body> 
  31.  
  32. </html>
發佈了55 篇原創文章 · 獲贊 31 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章