初学js的时候,被回调函数搞得很晕,如今回过头来总结一下什么是回调函数。javascript
咱们先来看看回调的英文定义:A callback is a function that is passed as an argument to another function and is executed after its parent function has completed。java
字面上的理解,回调函数就是一个参数,将这个函数做为参数传到另外一个函数里面,当那个函数执行完以后,再执行传进去的这个函数。这个过程就叫作回调。ajax
其实也很好理解对吧,回调,回调,就是回头调用的意思。主函数的事先干完,回头再调用传进来的那个函数。可是之前看过不少博客,他们老是将回调函数解释的云里雾里,很高深的样子。函数
举一个别人举过的例子:约会结束后你送你女友回家,离别时,你确定会说:“到家了给我发条信息,我很担忧你。” 对不,而后你女友回家之后还真给你发了条信息。小伙子,你有戏了。其实这就是一个回调的过程。你留了个参数函数(要求女友给你发条信息)给你女友,而后你女友回家,回家的动做是主函数。她必须先回到家之后,主函数执行完了,再执行传进去的函数,而后你就收到一条信息了。blog
如今基本理解回调函数的意思了吧。不理解的话不要紧,咱们用代码说话。ip
//定义主函数,回调函数做为参数 function A(callback) { callback(); console.log('我是主函数'); } //定义回调函数 function B(){ setTimeout("console.log('我是回调函数')", 3000);//模仿耗时操做 } //调用主函数,将函数B传进去 A(B); //输出结果 我是主函数 我是回调函数
上面的代码中,咱们先定义了主函数和回调函数,而后再去调用主函数,将回调函数传进去。回调函数
定义主函数的时候,咱们让代码先去执行callback()回调函数,但输出结果倒是后输出回调函数的内容。这就说明了主函数不用等待回调函数执行完,能够接着执行本身的代码。因此通常回调函数都用在耗时操做上面。好比ajax请求,好比处理文件等。博客