繁体   English   中英

使用另一个延迟对象解析jquery延迟对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM