【问题标题】:What does 'rejected' mean for Deffered objects other than jqXHRs?对于 jqXHR 以外的延迟对象,“拒绝”是什么意思?
【发布时间】:2013-04-04 13:57:28
【问题描述】:
来自deferred.fail()page:
说明:添加延迟对象时要调用的处理程序
被拒绝。
还有例子:
$.get("test.php")
.done(function(){ alert("$.get succeeded"); })
.fail(function(){ alert("$.get failed!"); });
我们知道,我们可以创建var someObject = $.Deferred();
我的问题:
谢谢。
是的,我知道我的英语不好。
【问题讨论】:
标签:
jquery
jquery-deferred
jqxhr
【解决方案1】:
当调用.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
您可以使用延迟来使异步函数的行为类似于$.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') }
);