js--回撥函式
阿新 • • 發佈:2018-12-05
今天碰到一個問題,如何獲取一個函式非同步操作的結果?(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