2015-07-19 24 views
0

我在看$.deferred的例子。在這個例子中,他們使用.promise,我真的不知道它在那裏的作用,因爲我得到的結果沒有它,所以我想知道在哪些有必要使用.promise或我們如何證明.promise在給定的例子。什麼時候在jQuery中使用.promise方法

如果我只是使用return deferred,它的工作也很好。

function waitforms(ms){ 
var deferred= $.Deferred(); 
setTimeout(function(){ 
deferred.resolve(new Date()) 
},ms) 

return deferred.promise(); // working with return deferred also 
} 

waitfor(2000).done(function(date){ 
console.log('Contrived example finished at'+ date.getTime()) 
}) 
+1

https://api.jquery.com/deferred.promise/ - 似乎很好地解釋 – user2864740

+0

爲什麼有人會投票這個問題?請儘量張貼在發佈解釋,以及當你給任何問題一個大拇指朝下。 +1從我這邊問題。 –

回答

1

承諾是延遲的受保護和更有限的子集。

由於延期,您可以解決或拒絕所有常規方法(如.then())之外的承諾。

有了承諾,您仍然擁有所有常規方法,如.then()用於監控承諾的狀態,但無法解決或拒絕承諾。

所以,一個承諾用於讓人們監視一個操作,但不會實際觸發它。你應該得到承諾,並在他們應該能夠完成的所有事情(監控它)時將其退還給他人。如果他們應該能夠實際解決或拒絕它,您可以讓人們訪問延遲對象。

通常,只有承諾應該去外部世界,延期應該保持在操作本身的內部。

相關問題