理解“回調”概念


要點:1、回調函數就是那些自己寫的,但是不是自己來調,而是給別人來掉的函數。(消息響應函數就可以看成是回調函數,因為是讓系統在合適的時候去調用。這不過消息響應函數就是為了處理消息的,所以就拿出來單做一類了。其實本質上就是回調函數。)
2、回調函數,或簡稱回調,是指通過函數參數傳遞到其它代碼的,某一塊可執行代碼的引用。回調函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用於對該事件或條件進行響應。這一設計允許了底層代碼調用在高層定義的子程序。回調的形式因程序設計語言的不同而不同。(C, C++ and Pascal允許將函數指針作為參數傳遞給其它函數。其它語言,例如JavaScript,Python,Perl和PHP,允許簡單的將函數名作為參數傳遞。Objective-C中允許利用@selector關鍵字傳遞SEL類型的函數名。)
回調允許函數調用者在運行時調整原始函數的行為。因為可以把調用者與被調用者分開,所以調用者不關心誰是被調用者。它只需知道存在一個具有特定原型和限制條件的被調用函數。
栗子🌰:
別人寫了一個函數,用來下載你的電話本。保存到一個文件里面。
別人的函數(參數1,參數2)
然后你使用這個函數。每次調用之后,電話本就被保存到指定文件里面了。
使用一段時間你會感覺,只是用這個函數是不錯,不過不知道下載的進度啊。
所以你就會要求把進度情況告訴你。

然后他就改進了一下
別人的函數(參數1,參數2,回調函數
並且告訴你回調函數的格式如下
回調函數(參數1:當前數量,參數2:總數量)

你使用時必須按照這個格式定義一個函數,然后傳給他。

如下,別人的函數(參數1,參數2,你寫的回調函數名字)

這樣,你每次調用別人的函數的時候,你寫的那個回調函數就會被調用(如何調用是別人控制的了,你只需要在你的函數里面處理好參數1 2就行了)

當然,很多時候回調是不分彼此的,這里寫的別人,和自己,只是為了好理解,意思就是表示2個調用和被調用的關系
剩下的你自己體會吧。

參考:http://zhidao.baidu.com/link?url=FL6gZKiFlyiQSYeJvu265wRLA2dDxGaar2pmV77Ec98hnGWiaWYGjUfyWgBw5Q50dCLoV5DaCOHqP5FwtYukea


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM