15
A
回答
25
當您有一個執行身份驗證的功能時,它非常有用,但它是異步執行的。您不能直接從該功能返回用戶信息(因爲您必須等待回調才能觸發),所以您可以返回承諾。這是一個特殊的對象,充當「佔位符」,當異步請求完成時,最終會填充用戶信息。
從 the documentation例子:
function (session, accessToken, extra, oauthUser) {
var promise = this.Promise();
asyncFindUser(function (err, user) {
if (err) return promise.fail(err);
promise.fulfill(user);
});
return promise;
}
這意味着調用上下文可以做工作,直到執行,直到它真正需要的是用戶信息(和所有的同時,在此期間,異步請求完成);如果用戶信息尚不可用,它將不得不在稍後階段等待。你可能會認爲它是線程創建和加入的一個非常具體的例子。
「Promise」是一個通用術語,涵蓋了這種功能在各種語言和語境:
在計算機科學中,未來,希望,和延遲是指在某些並行用於同步構造編程語言。他們描述了一個對象,該對象充當最初未知的結果的代理,通常是因爲其值的計算還沒有完成。
相關問題
- 1. 什麼是承諾對象?
- 2. 會承諾什麼?
- 3. 什麼是R中的承諾對象?
- 4. 承諾鏈條的成語是什麼?
- 5. MongoDB中的承諾是什麼?
- 6. 爲什麼這項服務回報承諾而不是履行承諾?
- 7. 承諾內承諾:從孩子承諾中返回變量的正確方法是什麼? (JS)
- 8. 承諾內承諾
- 9. 承諾拒絕失敗,承諾承諾
- 10. 承諾中的承諾承諾
- 11. 爲什麼我的承諾不工作?
- 12. JavaScript中的承諾有什麼意義?
- 13. 爲什麼承諾先解決?
- 14. 藍鳥承諾:爲什麼不超時?
- 15. ES2015承諾 - 我錯過了什麼?
- 16. 承諾是解決
- 17. angular 2承諾承諾
- 18. 對Angular2的承諾承諾
- 19. 回覆承諾的承諾
- 20. 爲什麼在通過承諾解決之前,我的承諾散列解決?
- 21. 如果你用另一個承諾解決承諾會發生什麼?
- 22. 爲什麼這是一個未處理的承諾拒絕?
- 23. 承諾。是什麼愨回報的決心()和解決差異()
- 24. CommonJS中「承諾」抽象的好處是什麼?
- 25. 爲什麼要用`eventEmitter`而不是承諾
- 26. JavaScript承諾的定義以及事件的區別是什麼?
- 27. 爲什麼結果不是我期望的Nodejs承諾?
- 28. 我的承諾是什麼這些圖標
- 29. 爲什麼承諾的目的是立即裏面
- 30. 什麼是「假陽性」拒絕承諾? possiblyUnhandledRejection?
謝謝......現在一切都很清楚! – rizidoro 2012-01-06 17:34:55
@Anonymous Drive-By Downvoter:你一定是在開玩笑吧? – 2012-01-10 19:34:54