我工作的用戶身份驗證功能,在兩個階段的工作:使用另一個承諾的角度承諾?
- 一個HTTP(REST)調用來獲取和確認用戶的身份
- 隨後打電話到第二系統,這將確認用戶的「角色」(系統權限)。
在第一次通話完成之前,我無法進行第二次通話。
我有一個名爲UserService服務具有的功能有點像這樣:
UserService.load() # returns a promise which has when resolved gives the user's identity as a sring.
我也想能夠做到包起來,這樣我有:
RoleService.load() # returns a promise which when resolved gives the user's valid roles in the form ["role1", "role2", ... "roleN"]
在爲了實現RoleService.load(),我想我必須做類似這樣的事情:
load:()->
if promise?
# Dont do anything if this promise is already cached
promise
else
promise = UserService.load().then((standardId)=>
@set(@getRolesForUser(standardId))
)
哪種作品假設getRolesForUser(u)立即返回。問題是第二個電話也將在網絡上,所以它必須變成另一個承諾。
我真正希望能夠做的是將解決第一個承諾的方式鏈接到承諾中,我傳遞給鏈的下一個階段是第二個承諾的輸出。
可以這樣做嗎?語法是什麼?