什么是回调函数?
当前回答
看看图片:)
主程序使用回调函数名调用库函数(也可能是系统级函数)。此回调函数可以以多种方式实现。主程序根据需要选择一个回调。
最后,库函数在执行期间调用回调函数。
其他回答
这使得回调听起来像方法末尾的返回语句。
我不确定这是什么。
我认为回调实际上是对一个函数的调用,是另一个函数被调用和完成的结果。
我还认为回调是为了处理原始调用,以一种“嘿!你要的东西?我已经做了-我想我会让你知道-还给你”的方式。
开发人员常常因为该死的东西的名称而被什么是回调弄糊涂。
回调函数是一个函数,它是:
可由其他功能访问,以及在第一个函数完成后调用
想象回调函数如何工作的一个很好的方法是,它是一个“在传入函数的后面调用”的函数。
也许一个更好的名称是“call after”函数。
这个构造对于异步行为非常有用,在异步行为中,我们希望在前一个事件完成时发生活动。
伪代码:
// A function which accepts another function as an argument
// (and will automatically invoke that function when it completes - note that there is no explicit call to callbackFunction)
funct printANumber(int number, funct callbackFunction) {
printout("The number you provided is: " + number);
}
// a function which we will use in a driver function as a callback function
funct printFinishMessage() {
printout("I have finished printing numbers.");
}
// Driver method
funct event() {
printANumber(6, printFinishMessage);
}
调用event()时的结果:
The number you provided is: 6
I have finished printing numbers.
这里的输出顺序很重要。由于回调函数是在后面调用的,所以“我已经完成了数字打印”是最后一个,而不是第一个。
回调是所谓的,因为它们与指针语言一起使用。如果你不使用其中一个,就不要为“回调”这个名字而烦恼。只需理解,它只是一个名称,用来描述作为另一个方法的参数提供的方法,这样当调用父方法(无论什么条件,如按钮单击、计时器滴答声等)且其方法体完成时,就会调用回调函数。
某些语言支持支持多个回调函数参数的构造,并根据父函数的完成方式进行调用(即,在父函数成功完成的情况下调用一个回调,在父功能抛出特定错误的情况下,调用另一个回调等)。
外行的回答是,它不是由您调用的函数,而是由用户或浏览器在某个事件发生或某些代码处理后调用的函数。
回调函数是在满足特定条件时应调用的函数。回调函数不是立即调用,而是在将来的某个时间点调用。
通常,当一个任务正在启动时,它将异步完成(即在调用函数返回后一段时间完成)。
例如,请求网页的函数可能要求其调用方提供回调函数,该回调函数将在网页完成下载时调用。
这个问题的简单答案是回调函数是通过函数指针调用的函数。如果您将一个函数的指针(地址)作为参数传递给另一个函数,则当该指针用于调用它所指向的函数时,称为进行了回调
推荐文章
- 什么是ORM,它是如何工作的,我应该如何使用它?
- 我能在服务器端应用程序(PHP、Ruby、Python等)上读取URL的哈希部分吗?
- 多少个参数是太多?
- 对于不可变集合上的非突变“add”方法,最好的名称是什么?
- foo到底是什么意思?
- foreach和map有区别吗?
- 设计模式:工厂vs工厂方法vs抽象工厂
- 为什么处理排序数组比未排序数组慢?
- 定义TypeScript回调类型
- 构造函数何时抛出异常是正确的?
- 什么是“一级”对象?
- 什么时候应该使用Debug.Assert()?
- 为什么浮点数不准确?
- 如何从处理程序中删除所有回调?
- IOException:进程不能访问文件“文件路径”,因为它正在被另一个进程使用