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