2013-05-28 33 views

回答

1

正如你所引用的規範描述:

accept(value)「接受」的值,它設置future對象的值該背景與你接受的任何價值。然後它將使用value處理任何接受回調。

resolve(value)「解析」延遲對象,它會在您的value中查找then屬性。如果IsCallable(then)爲true,則它調用then。然後它運行value上下文對象的accept()。如果沒有then,它將運行reject()

因此,基本上resolve可以調用accept()reject()本身。

我希望我剛剛寫的內容清晰...這個過程稍微詳細些,但在規範中有詳細解釋。

+0

所以你說的是用戶不應該直接調用accept()。相反,我們應該調用'resolve()',如果可能的話調用'accept()',否則調用'reject()'。感謝您的解釋。 – Gili

+0

你可以調用'accept()',但是我認爲在大多數情況下你會調用'resolve()'。 [Here is](http://blog.mediumequalsmessage.com/promise-deferred-objects-in-javascript-pt1-theory-and-semantics)一篇關於promise和deferred對象的好文章。 – MMM