1. 程式人生 > >js--回撥函式

js--回撥函式

今天碰到一個問題,如何獲取一個函式非同步操作的結果?(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