首页 新闻 会员 周边 捐助

Javascript中采用绑定方式调用函数时如何附加参数

0
悬赏园豆:5 [已解决问题] 浏览: 62次 解决于 2025-01-21 15:45

请教一个问题:我有一个方法:
request.postandAlert = function (url, prarms, callBackFun) {
$.ajax({
type: "post",
url: url,
data: prarms,
success: successFun,
error: errorFun,
contentType: "application/json",
});
}
var successFun = function (result, a, b, c) {
}
请问如何把callBackFun作为参数,传入到successFun方法中去?

Shapley的主页 Shapley | 菜鸟二级 | 园豆:252
提问于:2025-01-17 14:12
< > 人人可用的开源BI工具
分享
最佳答案
0

在 JavaScript 中,当你想将一个函数作为参数传递给另一个函数,并在回调函数内部调用这个参数函数时,可以通过定义一个闭包来实现。你可以将 callBackFun 作为参数传入 successFun 中并在 successFun 中调用它。

以下是代码的修改示例,展示了如何把 callBackFun 作为参数传入 successFun 方法中:

request.postandAlert = function (url, params, callBackFun) {
    $.ajax({
        type: "post",
        url: url,
        data: params,
        success: function (result, a, b, c) {
            successFun(result, a, b, c, callBackFun); // 将 callBackFun 作为参数传递
        },
        error: errorFun,
        contentType: "application/json"
    });
}

var successFun = function (result, a, b, c, callBackFun) {
    console.log(result); // 处理 Ajax 返回的结果

    // 调用回调函数,传入需要的参数
    if (typeof callBackFun === 'function') {
        callBackFun(result, a, b, c);
    }
}

// 示例调用
request.postandAlert('/api/example', JSON.stringify({ key: 'value' }), function (result, a, b, c) {
    console.log('Callback function called!', result, a, b, c);
});

关键点说明

  1. 嵌套的成功回调

    • .ajaxsuccess 回调中,调用 successFun 时传入 callBackFun 作为最后一个参数。
  2. successFun 中调用回调

    • successFun 中检查 callBackFun 是否为函数,然后调用它并将需要的参数传递给它。
  3. 示例调用

    • 调用 request.postandAlert 时,最后一个参数就是你的回调函数,它会在 successFun 内部被调用。

总结

通过这种方式,你能够在 successFun 中访问到 callBackFun,并可以根据需求来决定何时以及如何调用它。这种灵活性使得你的 Ajax 请求处理更具可扩展性和解耦性。

收获园豆:3
Technologyforgood | 大侠五级 |园豆:7872 | 2025-01-20 09:19
其他回答(2)
0

直接传 callBackFun 即可

function callBackFun()  {
   console.log('callBackFun');
}

var successFun = function (result, a, b, c, callback) {
   callback();
}

successFun('result', 'a', 'b', 'c', callBackFun);
dudu | 园豆:27977 (高人七级) | 2025-01-17 17:57
0

这种需求?

request.postandAlert = function (url, prarms, callBackFun) {
        $.ajax({
            type: "post",
            url: url,
            data: prarms,
            success: (successResult) => successFun(successResult, callBackFun, 'b', 'c'),
            error: errorFun,
            contentType: "application/json",
        });
    }
    var successFun = function (result, a, b, c) {}
收获园豆:2
梦幻墟都 | 园豆:204 (菜鸟二级) | 2025-01-18 10:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册
Top