我有这样的Typescript方法,我希望它返回一个Promise,但只有在执行this.user.currentCourseId = student.currentCourseId;
行之后才会返回。
有可能吗?
public getUserData()
{
...
this.authState.auth.getToken().then(token =>
{
this.user.token = token;
this.userService.update(this.user).then(student =>
{
this.user.currentCourseId = student.currentCourseId;
});
});
}
答案 0 :(得分:1)
您立即返回承诺。并且,第一个ghci> runParser tree $ map (>0) [0, 1, 0,0,0,0,0,0,0, 1, 0,0,0,0,0,0,1]
[(Node (Leaf (False, False, False, False, False, False, False)) (Leaf (False, False, False, False, False, False, True)),[])]
处理程序中的任何其他promise都会返回到其中,以便它们被链接到原始的promise:
.then()
答案 1 :(得分:1)
正如jfriend指出的那样,你已经迫不及待地想要在它完成之前返回一个承诺。这将把车推到马前。你马上回复了这个承诺,然后把它链接起来等待它完成。
我只想指出你应该利用承诺链来避免滑向“厄运之塔”的习惯:
public getUserData()
{
...
// return promise from function
return this.authState.auth.getToken().then(token =>
{
this.user.token = token;
// return promise here to chain to original promise
return this.userService.update(this.user)
}).then(student => {
this.user.currentCourseId = student.currentCourseId;
});;
}
getUserDate().then(() => {
// currentCourseId has been set now
});