![](/img/trans.png)
[英]How to make a jQuery Deferred object resolve/reject with the same 'resolved/rejected' state of another deferred?
[英]Resolve jquery deferred object with another deferred object
如何使用另一个解析状态解析一个Deffered对象。 简单的例子和简单的解释请(看到很多困难的)。
我如何用foo()
解决result
承诺,没有.done(..)
和.fail(..)
?
var result = $.Deferred(); /** * @returns {Deferred} */ var foo = function() { // ... something that returns deferred object at random moment of time }; foo() .done(function(){result.resolve()}) .fail(function(){result.reject()}) ; setTimeout(function() { result.reject(); }, 50); setTimeout(function(){ console.log('Result is:', result.state()); }, 100);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
您可以使用$.Deferred
传递的函数并从内部解析/拒绝延迟:
var result = $.Deferred(function() { Math.random() > 0.5 ? this.resolve() : this.reject(); }); setTimeout(function(){ document.write('Result is: ' + result.state()); }, 100);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
你的Deferred对象def
是多余的(参见Benajmin Gruenbaum给出的链接,为什么它实际上是危险的[沉默失败])。 解析/拒绝结果对象:
var result = $.Deferred(); var foo = function() { return Math.random() > 0.5 ? result.resolve() : result.reject(); }; setTimeout(function(){ document.write('Result is:', result.state()); }, 500); foo();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.