来自deferred.fail()
page:
描述:添加要在Deferred对象调用时调用的处理程序 拒绝。
和例子:
$.get("test.php")
.done(function(){ alert("$.get succeeded"); })
.fail(function(){ alert("$.get failed!"); });
我们知道,我们可以创建var someObject = $.Deferred();
我的问题:
如果不是jqXHR,我们如何'拒绝'延期?
如何为除jqXHR以外的延迟对象实现deferred.fail()
?
感谢。
是的,我知道我的英语不好。
答案 0 :(得分: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') }
);