一、回调函数(异步操作)就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
很多时候,回调是一个当某些事件发生时被调用的方法。
1.回调函数的作用
js代码会至上而下一条线执行下去,但是有时候我们需要等到一个操作结束之后再进行下一个操作,这时候就需要用到回调函数
回调函数是一个作为变量传递给另外一个函数的函数,从上至下执行,遇到调用执行函数a,然后执行回调函数,然后执行主函数回调后面的语句,但因为是return 所以不会打印出 ‘这是parent函数a’,执行完主函数,执行调用以后的语句result = 4
2.回调函数的使用:
例子1:
function a(callBack) {
var m = 1;
var n = 3;
return callBack(m, n);
console.log("这是parent函数a");
}
function b(m, n) {
console.log("这是回调函数B");
return m + n;
}
(function () {
var result = a(b);
console.log("result = " + result);
})();
结果:
这是回调函数B
4
例子1:
function a(callBack) {
var m = 1;
var n = 3;
callBack(m, n);
console.log("这是parent函数a");
}
function b(m, n) {
console.log("这是回调函数B");
return m + n;
}
(function () {
var result = a(b);
console.log("result = " + result);
})();
结果:
这是回调函数B
这是parent函数a
result = undefined //因为没有把结果return回来
例子2:
console.log(1);
function f(callback) {
console.log(2);
callback()
console.log(9)
}
function b() {
console.log(5);
}
f(b)
console.log(4);
//1 2 5 9 4
console.log(1);
function f(callback) {
console.log(2);
callback()
console.log(9)
}
function b() {
console.log(5);
}
console.log(10)
f(b)
console.log(4);
//1 10 2 5 9 4
两者函数调用方式的区别:
1、对普通函数(同步操作)的调用:调用程序发出对普通函数的调用后,程序执行立即转向被调用函数执行,直到被调用函数执行完毕后,再返回调用程序继续执行。从发出调用的程序的角度看,这个过程为“调用-->等待被调用函数执行完毕-->继续执行”。
- 回调函数(异步操作)的调用:从上而下执行代码,打印1,10,遇到f(b)调用,打印2,接着遇到回调函数的调用,打印5,执行完回调函数,回到主函数打印9,主函数执行完以后打印4,回调函数意思就是函数b不需要等到函数f结束以后再执行,如果是普通函数,则函数b需要等到函数f执行完以后再执行。






网友评论