STM32/STM8技术william hill官网
直播中

屈鑫燕

7年用户 234经验值
私信 关注
[问答]

请问函数的调用和回调有何区别 ?

请教:
函数的调用 和 回调 有何区别 ?

谢谢!

回帖(15)

张婧怡

2018-11-16 08:55:17
感觉回调函数不是一两句话就能说清楚的 否则不能感受它的魅力 特来补充回答 链接给出的回答应该能有帮助 以一个回答举例

你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。

作者:常溪玲
链接:https://www.zhihu.com/question/19801131/answer/13005983
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

上述中说电话号码是回调函数,其实可以深层一步步地分析:
1.首先买东西是我们的目的(可以看做自己写的应用函数)
2.买东西有很多种方式,可以去商店,或者网购等,我们选择去商店(选择哪个库来调用方便的实现自己的应用函数)
3.商店里可以选择在店员那里结账买,也可以自动售货机上买,我们选择在店员那里面买(选择哪个库函数)
4.现在店员那里会告诉两种情况,有货和没货(库函数里分了两个事件)
5.很不幸,我们遭遇了没货的情况,店员要求我们自己决定解决这种情况的方法,而这里我们自己决定的方法就是回调函数,我们可以不买也可以留下电话或留下地址,这些我们告诉店员应该怎么做的方法表现在程序里就是回调函数。那么相应的,在店员那里记下应该怎么做叫登记回调函数,等店里来货了就会触发了回调所关联的事件等,后面的就都好理解了。

所以回调函数可以理解为我要A为我做一件事,但是我必须提供一些方法,A才能完整的把事情做完。这里的方法就是回调函数。

https://www.zhihu.com/question/19801131
举报

李悛

2018-11-16 09:12:13
函数的调用:调用别人。
回调:(自动的)被别人调用。
举报

张志诚

2018-11-16 09:32:06
顶楼上。应该是正确的
举报

李天氍

2018-11-16 09:51:19
举报

h1654155956.5608

2018-11-16 09:57:14
只是方式不同。
举报

屈鑫燕

2018-11-16 10:09:57
引用: 7762642422d 发表于 2018-11-16 14:14
函数的调用:调用别人。
回调:(自动的)被别人调用。

谢谢元老  !
举报

王妍炜

2018-11-16 10:20:57
还有:
函数的嵌套调用 和 递归 调用
举报

潘小旋

2018-11-16 10:37:08
:lol:lol
举报

屈鑫燕

2018-11-16 10:47:01
引用: lfy1980 发表于 2018-11-16 13:57
感觉回调函数不是一两句话就能说清楚的 否则不能感受它的魅力 特来补充回答 链接给出的回答应该能有帮助 以一个回答举例

你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数 ...

谢谢 大侠、高人 !

现在 感觉 理解回调了!
大侠 风趣 而又 深入浅出 的语言 让人 读来 倍感 彻悟 !

知乎链接的提供,更有 醍醐灌顶 之感也 !
举报

李天氍

2018-11-16 10:55:45
举报

王妍炜

2018-11-16 11:03:24
引用: lfy1980 发表于 2018-11-16 13:57
感觉回调函数不是一两句话就能说清楚的 否则不能感受它的魅力 特来补充回答 链接给出的回答应该能有帮助 以一个回答举例

你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数 ...

看了 大侠的回帖,对 回调函数 有了 新认识 ,顶起
举报

陈嘉宁

2018-11-16 11:18:09
回调一般是  自己写得函数 被别的地方调用
举报

屈鑫燕

2018-11-16 11:29:37
引用: doubleyh 发表于 2018-11-16 16:20
回调一般是  自己写得函数 被别的地方调用

谢谢版主 !

感觉 没有体现 “ 回 ” 的意思
举报

张桂芝

2018-11-16 11:40:53
还有:,好帖,必须支持一下!
举报

李敏

2018-11-16 11:48:02
虽然已经解决,还是发表一下个人见解。感觉回调函数就是预留给外部模块的接口,由外部模块实现特定功能。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分