Я работаю на функции пользователя аутентификации, которая работает в два этапа:Угловое обещание, которое использует другое обещание?
- Один HTTP (отдых) называют получить и подтвердить личность пользователя
- следует вызов на вторую систему, которая будет подтвердите «роли» пользователя (разрешения в системе).
Я не могу выполнить второй вызов до завершения первого вызова.
У меня есть сервис под названием 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))
)
Какой-то работает ssuming, что getRolesForUser (u) возвращается мгновенно. Проблема в том, что этот второй звонок также будет в сети, поэтому его придется превратить в другое обещание.
То, что я действительно хочу сделать, это объединить обещания таким образом, что, разрешив первое обещание, то, что я перехожу на следующий этап цепи, является результатом второго обещания.
Можно ли это сделать? Что такое синтаксис?