Javascript 延迟jQuery的错误处理和恢复

Javascript 延迟jQuery的错误处理和恢复,javascript,jquery,promise,jquery-deferred,Javascript,Jquery,Promise,Jquery Deferred,我正在使用jQuery,并且知道这个问题是因为jQuery.Deferred实现不是promissions/A+compiant。我不想使用任何其他库来解决这个问题 既然这样,有没有办法从$.Deferred().fail()回调中恢复,从而返回到成功链?这可以通过then()的多重回调形式实现,但到目前为止,我还没有找到使用.fail()的解决方案 然后: 失败(不起作用): 在我的情况下,我只需要检查失败,设置一个标志,然后继续我正在做的事情。我不需要“then”示例中的并行成功处理程序 这

我正在使用jQuery,并且知道这个问题是因为jQuery.Deferred实现不是promissions/A+compiant。我不想使用任何其他库来解决这个问题

既然这样,有没有办法从
$.Deferred().fail()
回调中恢复,从而返回到成功链?这可以通过
then()
的多重回调形式实现,但到目前为止,我还没有找到使用
.fail()
的解决方案

然后:

失败(不起作用):

在我的情况下,我只需要检查失败,设置一个标志,然后继续我正在做的事情。我不需要“then”示例中的并行成功处理程序


这里有一个例子来进一步阐明我的意思。

不,你不能用
.fail
来说明这一点。但是,您不需要将函数作为第一个参数传递给:

如果不需要该类型的回调,则参数可以是
null

因为只有
然后
才能启用链接,所以您应该使用

asyncThatWillFail().then(null, function () {
    console.log("error");
    return $.Deferred().resolve();
}).then(function () {
    console.log("continuing on success chain");
});
除了需要返回已实现的jQuery承诺之外,这与方法类似,其中是
的同义词。然后(null,…)

asyncThatWillFail().fail(function () {
    console.log("error");
    return $.Deferred().resolve();
}).then(function () {
    console.log("continuing on success chain");
});
asyncThatWillFail().then(null, function () {
    console.log("error");
    return $.Deferred().resolve();
}).then(function () {
    console.log("continuing on success chain");
});