什么是回调函数?
当前回答
回叫最容易用电话系统来描述。功能调用类似于打电话给某人,问她问题,得到答案,然后挂断电话;添加回拨会改变类比,这样在问她一个问题后,你也可以给她你的名字和电话号码,这样她就可以给你回拨答案。
--Paul Jakubik,“C++中的回调实现”
其他回答
一个重要的使用领域是将一个函数注册为句柄(即回调),然后发送消息/调用某个函数来执行某些工作或处理。现在,处理完成后,被调用的函数将调用我们注册的函数(即,现在回调完成),从而表明处理完成。这个维基百科链接以图形方式解释得很好。
回调函数是在满足特定条件时应调用的函数。回调函数不是立即调用,而是在将来的某个时间点调用。
通常,当一个任务正在启动时,它将异步完成(即在调用函数返回后一段时间完成)。
例如,请求网页的函数可能要求其调用方提供回调函数,该回调函数将在网页完成下载时调用。
回调是将一个函数作为参数传递给另一个函数,并在流程完成后调用此函数的想法。
如果你通过上面精彩的答案得到回调的概念,我建议你应该了解它的背景。
“是什么让他们(计算机科学家)开发回调?”你可能会学到一个问题,那就是阻塞。(尤其是阻止UI)回调并不是唯一的解决方案。还有很多其他解决方案(例如:线程、期货、承诺…)。
这个问题的简单答案是回调函数是通过函数指针调用的函数。如果您将一个函数的指针(地址)作为参数传递给另一个函数,则当该指针用于调用它所指向的函数时,称为进行了回调
看看图片:)
主程序使用回调函数名调用库函数(也可能是系统级函数)。此回调函数可以以多种方式实现。主程序根据需要选择一个回调。
最后,库函数在执行期间调用回调函数。