回调函数:获取异步操作的结果

回调函数:获取异步操作的结果

下面我们先看一个例子

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);

}


版权声明:本文为cattra126原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。