回调函数:获取异步操作的结果
下面我们先看一个例子
function fn() {
setTimeout(function () {
var data = 'hello'
},1000)
}
如果我们想要获取定时器中的数据要怎么做呢
很多人可能会这样想
function fn() {
var data = ''
setTimeout(function () {
data = 'hello'
},1000)
return data
}
console.log(fn())
函数的执行结果为 ‘’ 空字符串,并没有获取到定时器中的数据
这是由于定时器设定内部函数在1s后执行,内部的data
数据1s后才会更新,而fn()
一旦执行立刻返回结果
这里,我们需要一个回调函数,在定时器内部执行,并获取返回更新了的data
function fn(callback) {
setTimeout(function () {
var data = 'hello'
callback(data)
},1000)
}
fn(function (data) {
console.log(data)
})
给fn传入一个函数作为参数,并在定时器内callback(data)
,进行调用
并将定时器内的数据作为参数返回输出
为了便于理解,将以上代码拆分
function fn(callback) {
setTimeout(function () {
var data = 'hello'
callback(data)
},1000)
}
fn(callback)
function callback(data) {
console.log(data);
}