【发布时间】:2014-12-03 22:05:23
【问题描述】:
我很困惑何时使用deferred.resolve() 和deferred.reject()。
快速示例
var doSomething = function() {
var deferred = $.Deferred();
if ( typeof myVar === "object" ) {
// Do something with myVar - Start.
deferred.resolve();
// Do something with myVar - End.
} else {
// myVar isn't an object, but the function has finished executing
// and that's what I want to know.
// With reject() I'll be forced to use always() instead of done()
// because there'll be also a fail() method available if myVar
// is not an object.
deferred.reject();
}
return deferred.promise();
};
问题
关于何时应该使用 deferred.reject() 的任何提示或规则?
注意
myVar 在某些时候是动画的。动画完成后,我会做一些其他事情,然后才解决 Deferred 对象。
【问题讨论】:
-
通知您的应用
myVar检查失败 -
解决就是成功,拒绝就是失败。您应该将延迟用于异步处理,而不是人为的同步示例。您基本上是在说您期望或希望会发生某些事情,但不能保证它会发生,因此您需要处理任何一个选项。网络上有大量可用信息,jquery 文档看起来确实很薄,但一般来说,查找 deferreds/promises/futures 应该会为您提供所需的信息。