要知道回调函数是啥,首先要知道,回调函数是用来干嘛的:
回调函数是用来取一个异步操作的函数里的值的,也就是说:如果一个函数是异步的,这个函数不知道什么时候才能完成,也就拿不到这个函数里的值。
其中一个解决方法就是在这个异步函数中再放一个函数,当这个异步函数完成后执行,这个安插在异步函数里的函数也就能打印出异步操作的结果了。
其他解决方法有如promise,await等操作,这里不讨论
那么具体怎么取呢,看代码:
1 function pre(callback){
2 var a="a"
3 callback(a)
4 console.log(1)
5 }
6
7 pre(function(b){
8 console.log(b)
9 console.log(2)
10 })
执行结果:
首先我们可以从打印结果中清楚的看见,代码的执行顺序。
其次再看,声明pre()函数时有一个参数,这个参数是一个函数名,在执行pre函数时,传入了一个实打实的函数:
function(b){
console.log(b)
}
这是啥意思呢,也就是说这个匿名函数被传进去后callback函数被赋值:
//伪代码
callback(a) = function(b){
console.log(b)
console.log(2)
}
上面的代码没有异步操作,那模拟一下异步操作,也是一样的:
function pre(callback){
setTimeout(function(){
var a="a"
callback(a)
},1000)
}
pre(function(b){
console.log(b)
console.log(2)
})
```一样可以得到,没有问题