簡體   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