javascript - 使用参数扩展回调

标签 javascript jquery

假设我有一个包装 jQuery ajax 方法的方法:

function GetJson(url, completeCallback, alwaysCallback, failCallback) {   
var newUrl = location.protocol + "//" + location.host + url;

$.getJSON(newUrl).done(function (result) {
    if (typeof completeCallback == "function") {
        completeCallback(result);
    }                
}).fail(function (jqxhr, textStatus, error) {
    if (typeof failCallback == "function") {
        failCallback(result);
    } else {
        alert("Request failed for " + url + " textStatus:" + textStatus + " Error:" + error);
    }        
}).always(function () {
    if (typeof alwaysCallback == "function") {
        alwaysCallback();
    }        
}); }

我调用了 DoSomething 方法,该方法在内部调用 GetJson。我想将 GetJSON 回调的结果作为 DoResume 的第一个参数传递;其余参数应从方法签名传递。

function DoSomething(a, b, c, id) {
var url = '/MyController/GetData?id=' + id;    
GetJson(url, DoResume(this.Result, a, b, c)); }

function DoResume(result, a, b, c) { }

我尝试使用此关键字来实现此目的,但结果未分配。

最佳答案

您需要传递一个函数而不是其调用的结果

GetJson(url, function(result){
    DoResume(result, a, b, c);
});

关于javascript - 使用参数扩展回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38833114/

相关文章:

jquery - Slim Jquery Mobile UI(无页面角色)

javascript - 无法从外部本地json获取数据

jquery - 在 jquery 中指向元素

javascript - 如何使用 React 测试库编写一个测试用例来验证当 data prop 更改时该函数是否被正确调用?

javascript - 将 Three.js 的 Raycaster 限制为 HTML 的特定部分。避免偏移

javascript - 多页 jquerymobile 文档第二页上的按钮的单击事件不会触发

javascript - 每天特定时间链接不可用

jquery - iphone safari webkit 与 mac safari 的区别

javascript - 带有 HTML 内容的 Angular 2 Material 工具提示

javascript - 带参数的简单 $http.get 请求