2012-01-06 41 views

回答

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」是一個通用術語,涵蓋了這種功能在各種語言和語境:

在計算機科學中,未來,希望,和延遲是指在某些並行用於同步構造編程語言。他們描述了一個對象,該對象充當最初未知的結果的代理,通常是因爲其值的計算還沒有完成。

+0

謝謝......現在一切都很清楚! – rizidoro 2012-01-06 17:34:55

+0

@Anonymous Drive-By Downvoter:你一定是在開玩笑吧? – 2012-01-10 19:34:54