来自deferred.fail()
page :
Description: Add handlers to be called when the Deferred object is rejected.
以及示例:
$.get("test.php")
.done(function(){ alert("$.get succeeded"); })
.fail(function(){ alert("$.get failed!"); });
众所周知,我们可以创建 var someObject = $.Deferred();
我的问题:
如果 Deferred 不是 jqXHR,我们如何“拒绝”它?
如何为 jqXHR 以外的延迟对象实现
deferred.fail()
?
谢谢。
是的,我知道我的英语很糟糕。
最佳答案
当 .reject()
时,延迟对象将被拒绝或.rejectWith()
被调用。
这是一个例子:
var deferred = $.Deferred();
deferred
.done(function() { console.log('done') })
.fail(function() { console.log('failed') });
deferred.resolve(); // <-- will write 'done' to console
deferred.reject(); // <-- will write 'failed' to console
您可以使用 deferreds 使异步函数的行为类似于 $.get()
。例如setTimeout
:
function MyTimeout() {
var deferred = $.Deferred();
setTimeout(function() {
// as a demo, this will reject the deferred half the time
if (Math.random() < 0.5)
deferred.reject();
else
deferred.resolve();
}, 2000);
return deferred.promise();
}
MyTimeout()
.done(function() { console.log('done') })
.fail(function() { console.log('failed') });
最后一条语句也可以写成:
MyTimeout().then(
function() { console.log('done') },
function() { console.log('failed') }
);
关于jquery - 'rejected' 对于 jqXHR 之外的延迟对象意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15780446/