簡體   English   中英

如何使用可傳遞Params的回調編寫jQuery函數?

[英]How to write a jQuery function with a callback that you can pass Params to?

我有以下功能:

function loadProjects(pID) {

    $.ajax({
        url: myURL,
        success: function (dataJS) {###Run any supplied call back here####}
    });
}

我像這樣調用該函數loadProjects(1);

問題是我希望能夠在成功之后定義一個CallBack函數,並且在執行loadProjects(1,pong(12))時想將其包括在內。 我希望能夠為回調提供參數。

我如何讓一個函數接受回調? 如何將回調傳遞給該函數?

就像是

function loadProjects(pID, callback) {

    $.ajax({
        url: myURL,
        success: function (dataJS) {###Run any supplied call back here####}
    });
}

然后我可以打電話給的地方:

loadProjects(22, pong(12))

問題是當我嘗試此操作時,pong(12)立即運行,而不是稍后在loadProjects函數中調用時運行嗎?

有想法嗎? 謝謝

嘗試這個:

function loadProjects(pID, callback) {

    $.ajax({
        url: myURL,
        success: function (dataJS) {
           if ($.isFunction(callback))
              callback();
        }
    });

}

loadProjects(1, function() { pong(12); });

要么:

function loadProjects(pID, callback, value) {

    $.ajax({
        url: myURL,
        success: function (dataJS) {
           if ($.isFunction(callback)) {
              if (value) {
                 callback(value);
              }else{
                 callback();
              }
           }

        }
    });

}

loadProjects(1, pong, 12);
loadProjects(22, function(){pong(12);});

嘗試這樣的事情:

var loadProjects = (function(pID, callback) {
    var params = { "property" : "value" }
    $.ajax({
       url: myURL,
       success: function (dataJS) { callback(params); }
    });
})

loadProjects(22, function(p){ console.log(p); });
function loadProjects(pID, callback) {
    var callbackArgs = arguments;
    callbackArgs.shift();
    callbackArgs.shift();

    $.ajax({
        url: myURL,
        success: function (dataJS) {
            // Null or this can be used depending on desired behavaiour
            // See https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/function/apply
            callback.apply(null, callbackArgs);
        }
   });
}

用法示例:

loadProjects(22, pong, 12);
loadProjects(22, pong, 12, 'foo', 'bar');

12,foo和bar都傳遞給pong回調。

暫無
暫無

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

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