回调函数:获取异步操作的结果##
下面我们先看一个例子
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);
}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于