簡體   English   中英

為什么兩次調用promise時RSVP Deferred都會產生錯誤

[英]Why RSVP Deferred produces error when promise is called twice

為什么當兩次調用promise時,RSVP Deferred會產生錯誤?

看來deferred.promise.then().finally()deferred.promise.then(); deferred.promise.finally()之間有區別deferred.promise.then(); deferred.promise.finally() deferred.promise.then(); deferred.promise.finally() 為什么?

 RSVP.on('error', function(reason) { console.log('Error: ' + reason); }); var deferred = RSVP.defer(); var deferred2 = RSVP.defer(); var deferred3 = RSVP.defer(); var promise3 = deferred3.promise; deferred.promise.then(function() { console.log('Resolved'); }, function() { console.log('Rejected'); }).finally(function() { console.log('Finally'); }); deferred2.promise.then(function() { console.log('Resolved2'); }, function() { console.log('Rejected2'); }); deferred2.promise.finally(function() { console.log('Finally2'); }); promise3 = promise3.then(function() { console.log('Resolved3'); }, function() { console.log('Rejected'); }); promise3.finally(function() { console.log('Finally3'); }); deferred.reject('Reject!'); deferred2.reject('Reject2!'); deferred3.reject('Reject3!'); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/rsvp/4.8.1/rsvp.js"></script> 

編輯:我發現了如何解決此問題。 請參閱代碼中的Deferred3。

我發現promise.then() (和其他方法)返回了修改后的promise,因此您必須鏈接thenfinallycatch ...方法,否則每次都必須保存promise

 RSVP.on('error', function(reason) { console.log('Error: ' + reason); }); var deferred = RSVP.defer(); var promise = deferred.promise; promise = promise.then(function() { console.log('Resolved'); }, function() { console.log('Rejected'); }); promise.finally(function() { console.log('Finally'); }); deferred.reject('Reject!'); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/rsvp/4.8.1/rsvp.js"></script> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM