$.when(a1, ...).fail(function() { alert('fail'); });
a1的值是否会强制延迟对象失败,而不会在对象中执行任何格式错误的ajax调用?
答案 0 :(得分:1)
您可以传递rejected Deferred object:
$.when($.Deferred().reject()).fail(function() {
alert("fail");
});
您可以在this fiddle中进行测试。
答案 1 :(得分:1)
详细说明@FrédéricHamidi,如果你有一个“异步”功能,而这个功能还没有被“宣传”,那么它通常会有成功和失败的回调。
然后你做了类似的事情:
// @returns {promise} a promise
function callAsync(args){
var deferred = $.Deferred();
ApiNotReturningPromise.ajax(args, function success(data) {
deferred.resolve(data);
// if you wish to always fail: o.O
// deferred.reject(data);
}, function fail(error) {
deferred.reject(error);
});
return deferred.promise();
}
同样,如果你愿意,你可以在这两种情况下失败,虽然这对我来说似乎没有意义,
但是,如果它已经是一个Promise,(并且AFAIK承诺就像jQuery一样),那么你可以重用这个承诺。