Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何覆盖jQuery承诺回调_Javascript_Jquery_Ajax_Promise - Fatal编程技术网

Javascript 如何覆盖jQuery承诺回调

Javascript 如何覆盖jQuery承诺回调,javascript,jquery,ajax,promise,Javascript,Jquery,Ajax,Promise,我创建了一个方便的方法,为我的ajax调用添加了一个默认错误处理程序: function myAjaxFunction(url, data) { return $.ajax({ url: url, data: data }).fail(myErrorHandler); } 到目前为止,这非常有效,因为现在我不必在50个不同的地方指定错误处理函数 但有时我需要用自定义错误处理程序覆盖默认错误处理程序。但是,当我执行此操作时,它会调用两个错误处

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

function myAjaxFunction(url, data) {

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

    }).fail(myErrorHandler);

}
到目前为止,这非常有效,因为现在我不必在50个不同的地方指定错误处理函数

但有时我需要用自定义错误处理程序覆盖默认错误处理程序。但是,当我执行此操作时,它会调用两个错误处理程序:

myAjaxFunction("myurl", "mydata").fail(myCustomErrorHandler).then(doSomething);
如何让它覆盖或从链中删除以前的错误处理程序

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

你不能

还是推翻它

您可以撤消它所做的操作(覆盖其效果)。但是,您最好避免添加常规处理程序——要做到这一点,您必须更改便利方法。我建议将自定义处理程序作为可选参数:

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

    }).fail(customHandler || myErrorHandler);
}

很好的建议和可选参数。这是正确的,但不令人满意。这意味着它的用户必须跨越旧的基于回调的API和新的基于承诺的API。