比如我们常用的异步请求:

$.ajax({
url:"test.json",
type: "GET",
data: {username:$("#username").val()},
dataType: "json",
beforSend:function(){
// 禁用按钮防止重复提交
$("#submit").attr({ disabled: "disabled" });
},
complete:function(msg){
//请求完成后调用的回调函数(请求成功或失败时均调用)
} ,
error:function(msg){
//请求失败时被调用的函数
} ,
Sucess:function(msg){
//请求成功后调用的回调函数
}
});

初学js的时候,被回调函数搞得很晕,现在回过头来总结一下什么是回调函数。

  我们先来看看回调的英文定义:A callback is a function that is passed as an argument to another function and is executed after its parent function has completed。

  字面上的理解,回调函数就是一个参数,将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数。这个过程就叫做回调。

  其实也很好理解对吧,回调,回调,就是回头调用的意思。主函数的事先干完,回头再调用传进来的那个函数。但是以前看过很多博客,他们总是将回调函数解释的云里雾里,很高深的样子。

  举一个别人举过的例子:约会结束后你送你女朋友回家,离别时,你肯定会说:“到家了给我发条信息,我很担心你。” 对不,然后你女朋友回家以后还真给你发了条信息。小伙子,你有戏了。其实这就是一个回调的过程。你留了个参数函数(要求女朋友给你发条信息)给你女朋友,然后你女朋友回家,回家的动作是主函数。她必须先回到家以后,主函数执行完了,再执行传进去的函数,然后你就收到一条信息了。

  现在基本理解回调函数的意思了吧。不理解的话没关系,我们用代码说话。

//定义主函数,回调函数作为参数
function A(callback) {
callback();
console.log('我是主函数');
} //定义回调函数
function B(){
setTimeout("console.log('我是回调函数')", );//模仿耗时操作
} //调用主函数,将函数B传进去
A(B); //输出结果
我是主函数
我是回调函数

上面的代码中,我们先定义了主函数和回调函数,然后再去调用主函数,将回调函数传进去。

  定义主函数的时候,我们让代码先去执行callback()回调函数,但输出结果却是后输出回调函数的内容。这就说明了主函数不用等待回调函数执行完,可以接着执行自己的代码。所以一般回调函数都用在耗时操作上面。比如ajax请求,比如处理文件等。

转载自:https://blog.csdn.net/u010261944/article/details/78927193

最新文章

  1. flush vs ob_flush
  2. angularJS——自定义指令
  3. 使用 CSS 媒体查询创建响应式网站
  4. OC—设计模式-通知的使用
  5. 分布式之高性能IO组件
  6. 剑指OFFER之数组中出现次数超过一半的数字(九度OJ1370)
  7. Zend Studio 或者Eclipse下安装插件Spket(以Zend为例)
  8. 9.14noip模拟试题
  9. android 点击下弹动画实现
  10. bios中断向量表
  11. linux上快速搭建宝塔面板来操作便捷功能
  12. dataTables 插件学习整理
  13. 移动端无限滚动 TScroll.vue组件
  14. Fetch使用
  15. 谈谈==和equals
  16. [osg]osg绘制动态改变顶点的几何体
  17. asp.net Log4Net错误日志个人总结
  18. Java 理论与实践: 用弱引用堵住内存泄漏
  19. 如何查看Drupal网站使用的模块
  20. matlab之simulink仿真入门

热门文章

  1. Oracle、SqlServer——临时表
  2. 问题:oracle LISTAGG 连接字符串;结果:Oracle 连接字符串的方法
  3. Eclipse中如何开启断言(Assert),方法有二
  4. git 本地代码到github(转)
  5. GitHub Blog创建以及本地管理(转)
  6. JavaScript基础笔记集合(转)
  7. var_dump — 打印变量的相关信息
  8. 关于A类,B类,C类IP地址的网段和主机数的计算方法
  9. 01 json环境搭建【spring + pringMVC】
  10. c语言实战: 计算时间差