2

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

function myAjaxFunction(url, data) {

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

    }).fail(myErrorHandler);

}

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

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

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

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

4

1 回答 1

6

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

你不能。

或覆盖它?

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

function myAjaxFunction(url, data, customHandler) {
    return $.ajax({
        url: url,
        data: data

    }).fail(customHandler || myErrorHandler);
}
于 2013-08-27T20:20:31.140 回答