[问题] 使用 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