【问题标题】:How to override jQuery promise callback如何覆盖 jQuery 承诺回调
【发布时间】:2013-08-28 04:20:31
【问题描述】:

我创建了一个方便的方法,它为我的 ajax 调用添加了一个默认错误处理程序:

function myAjaxFunction(url, data) {

    return $.ajax({
        url: url,
        data: data

    }).fail(myErrorHandler);

}

到目前为止,这很好用,因为现在我不必在 50 个不同的地方指定错误处理函数。

但有时我需要使用自定义错误处理程序覆盖默认错误处理程序。但是,当我这样做时,它会调用 both 错误处理程序:

myAjaxFunction("myurl", "mydata").fail(myCustomErrorHandler).then(doSomething);

如何让它从链中覆盖或删除先前的错误处理程序?

【问题讨论】:

    标签: javascript jquery ajax promise


    【解决方案1】:

    如何让它从链中删除以前的错误处理程序?

    你不能。

    还是覆盖它?

    您可以撤消它所做的(覆盖其效果)。但是,您最好完全避免添加通用处理程序 - 为此,您必须更改您的便捷方法。我建议使用自定义处理程序作为可选参数:

    function myAjaxFunction(url, data, customHandler) {
        return $.ajax({
            url: url,
            data: data
    
        }).fail(customHandler || myErrorHandler);
    }
    

    【讨论】:

    • 带有可选参数的好建议。
    • 这是正确的,但并不令人满意。这意味着用户必须跨越旧的基于回调的 API 和新的基于 Promises 的 API。
    猜你喜欢
    • 1970-01-01
    • 2019-08-28
    • 2016-06-15
    • 1970-01-01
    • 2019-07-20
    • 2020-04-05
    • 1970-01-01
    • 2012-12-19
    • 2017-12-21
    相关资源
    最近更新 更多