调用fn,得到setTimeout内部的data
function fn () {
setTimeout(function () {
let data = 'hello'
}, 1000)
}
fn()
此方法会失败,因为异步操作先执行console.log(data),后执行定时器
定时器原理,先注册一个事件,这个事件就是一秒后调用function
function fn () {
let data = ''
setTimeout(function () {
data = 'hello'
}, 1000)
console.log(data)
}
fn()
在分支出去的异步操作里加上一个这条分支上同步的函数,然后依靠这个函数返回data
所以我们需要在这个异步操作的事件中再定义一个函数,这个函数返回data,这样就在异步中同步了
而这个函数就被称为回调函数callback
所以如果需要获取一个异步操作的结果,必须使用回调函数
也就是说回调函数的作用就是获取异步操作的结果
function fn (a) {
setTimeout(function () {
let data = 'hello'
a(data)
}, 1000)
}
fn(function (data) {
console.log(data)
})