簡體   English   中英

您能向我解釋這個Javascript回調函數嗎?

[英]Can you explain this Javascript callback function to me?

如果我有以下回調函數:

a(function  () {
  b() 
})

我的理解是,將首先執行a,然后在完成a之后執行b

但是通常在編程中,您可以在括號內將參數傳遞給函數,對嗎? 因此,在此函數中,好像您正在傳遞

function  () {
  b() 
}

函數a作為參數。 因此,根據我對編程的了解,a應該以所有參數作為參數執行對嗎?

但是,根據我對回調的了解,它意味着所有這些都在函數執行之后執行。 你看到矛盾了嗎? 另外,函數不具有參數就不會執行嗎?

參數在javascript中的作用不同嗎? 默認情況下,括號中的所有內容是否在函數本身之后執行?

a()函數必須有一個實際上是回調的參數,它不能自動地工作

function a(callback) {  // callback argument
    // do lots of stuff

    callback(); // call the function after stuff has been done
}

a(function() {
    b();
});

你也可以做

a(b);

並將參數傳遞給回調

function a(callback) {  // callback argument
    // do lots of stuff

    callback(param1, param2, param3);
}

a(function(param1, param2, param3) { // here we get them back
    b(param2); // and we can pass them along
});

這對於異步行為特別有用

function a(callback) {  // callback argument

    $.ajax({
        // ajax arguments
    }).done(function(returned_data) {

        callback(returned_data);

    });

}

a(function(returned_data) { // data from the ajax call
     // do something with returned_data
});

這只是一個示例,$。ajax返回一個更易於使用的promise,但是它顯示了回調如何與異步函數一起工作。

附帶說明,您經常會在代碼中看到無法保證回調的情況,然后在嘗試執行回調函數以避免錯誤之前檢查是否有作為參數傳遞的回調函數才有意義。

function a(callback) {  // callback argument
    // do lots of stuff

    if (typeof callback === 'function') {
        callback();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM