回调
来源:互联网 发布:打的软件叫车 编辑:程序博客网 时间:2024/06/05 07:30
今天看js异步回调,有点不清楚,上网查了下资料先看看回调是什么。
下图来源于维基百科,用来说明回调。
举个例子,如下图代码:
#include <stdio.h>#include <stdlib.h>int sort_function( const void *a, const void *b);int list[5] = { 54, 21, 11, 67, 22 };int main(void){ int x; qsort((void *)list, 5, sizeof(list[0]), sort_function); for (x = 0; x < 5; x++) printf("%i\n", list[x]); return 0;}int sort_function( const void *a, const void *b){ return *(int*)a-*(int*)b;}
主函数外有个sort_function函数,主函数内调用函数sort( ),而sort()函数接口处又包含sort_function函数指针,。这里将main()函数和sort_function()看成同一层,将被调函数sort()看成底层。
首先是顶层的主函数调用底层的函数,而后底层的函数又调用了顶层的函数,因此叫它回调,
这里为了完成定制化的功能将传入了一个函数sort_function(),这个函数就是回调函数,这个导入的过程注册。
那么问题来了,在高级语言里函数内是可以定义函数的,因此上面说的顶层调用底层,底层再调用顶层可能不存在。
在函数A内定义函数B和函数C,并调用函数B,而函数B又将函数C作为参数,能说是顶层调用底层,底层再调用顶层吗?
简单点理解回调吧,就是将函数指针或者将函数作为对象传参。
反正这个概念也是别人说的,我目前就是这样理解吧,就是传递函数以便完成一些定制化功能,比如定义一系列的消息处理函数,将这些消息处理函数传递给系统的接口,这样系统就可以针对消息完成一些定制化的处理方式。
至于网上有些说回调是你调用我,我再调用你,这肯定不对。
参考:https://www.zhihu.com/question/19801131
https://www.ibm.com/developerworks/cn/linux/l-callback/
阅读全文
0 0
- 回调
- 回调
- 回调
- 回调
- 回调
- 回调
- 回调
- 回调
- 回调
- 回调
- 回调
- 回调
- 回调
- 回调
- 回调
- 回调
- 回调?
- 回调
- 骨牌铺方格 递推
- java-异常/断言/日志/调试
- neutron安全组分析(四)
- 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(五)
- JS把字符串变成变量名
- 回调
- PHP 文件打开-读取-读取
- 安装windows10 utfs磁盘问题
- 1. KEYS/RENAME/DEL/EXISTS/MOVE/RENAMENX: #在Shell命令行下启动Redis客户端工具。 /> redis-cli #清空当前选择的
- 如何快速全面建立自己的大数据知识体系
- Ubuntu下安装Docker
- 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(六)
- 判断闰年(七)
- Spring动态切换中从库(多数据源)