[問題] 使用 callback 的時機

作者: largesperm (reindeer)   2020-01-08 10:35:53
在找 callback 的概念的時候 看到一段範例 (Code #1)
直觀看起來跟直接 call function 不是一樣嗎 (Code #2)
請問使用 callback 的時機會是什麼呢
有找過幾篇文章 大部分都是範例 有帶解釋
不過還是 ... 沒有很理解
作者: plsmaop (plsmaop)   2020-01-08 10:48:00
沒在 c 裡面寫過 callback,在 js 裡通常是發出一個 httprequest 之後告訴 js runtime 說拿到 response 後執行這個 callback,參數是 response 帶回來的內容我想一下其他情境:可能有好幾個功能大部分的行為是一樣的,只差在最後,那我把共同的部分抽出來,然後把不一樣的行為包成 function,傳進去給共同的部分,共同的部分最後會跑傳進來的 function
作者: LPH66 (-6.2598534e+18f)   2020-01-08 11:28:00
以你的 Code#1 為例的話, 考慮 B 是函式庫裡已經寫好的程式它的有些地方會需要使用者傳入部份動作或邏輯一個最簡單的這樣的例子是 C 的 qsortqsort 的第四參數是傳入一個函式, 即是這種狀況套用四樓的說法的話: 快排演算法的主邏輯是不變的不一樣的是元素如何比大小, 所以把它抽出來作為 callback
作者: hsnuyi (羊咩咩~)   2020-01-08 12:53:00
韌體常用
作者: flysonics (飛音)   2020-01-08 22:14:00
你去看driver code會更容易體會到用callback的時機
作者: ko27tye (好滋好滋)   2020-01-08 22:15:00
同樣return和參數的function pointer可用同一個callback
作者: flysonics (飛音)   2020-01-08 22:15:00
通常是需要非即時性的handler function時會用到你如果很確定function routine的話其實直接寫就OK
作者: dces4212 (flawless)   2020-01-08 22:37:00
UART接收後的handler function也是個callback
作者: boss0405 (boss)   2020-01-08 22:59:00
LinuxDriver的ops,或是HAL層的模組化
作者: largesperm (reindeer)   2020-01-09 08:55:00
原來是這樣 各位的解釋很直觀 明白了 謝謝
作者: cphe (魔鬼藏在垃圾筒裡)   2020-01-09 09:41:00
沒有馬上要執行的就叫callbackLinux kernel很多可以看看,你這範例蠻不好的其實
作者: final01 (牛頓運動定律)   2020-01-23 22:40:00
沒有馬上要執行就是callback這解釋我也是醉了
作者: cia1099 (阿兜啊)   2020-02-24 08:21:00
你只要想寫lamda的時候就是call back的時機了

Links booklink

Contact Us: admin [ a t ] ucptt.com