今天碰到一个问题,如何获取一个函数异步操作的结果?(setTimeout,readFile,writeFile,ajax)
答:用回调函数。
看下面这个例子:
function add(x,y,callback) {
console.log(1)
setTimeout(function () {
//如何拿到这个ret
var ret = x + y
})
console.log(3)
}
用回调函数来取data的值
function add(x,y,callback) {
console.log(1)
setTimeout(function () {
var ret = x + y
callback(ret)
})
console.log(3)
}
add(12,12,function (data) {
console.log(data)
})
此时,function add (callback) 中的 callback 等于 function (data) {
console.log(data)
} ,在执行定时器时,会在函数内部调用这个回调函数,拿到data的值。
callback(err,data)
第一个参数
成功是null 失败是错误对象
第二个参数
成功是data 失败是undefined