如何在此方法中返回Promise

时间:2016-12-24 01:41:35

标签: typescript promise

我有这样的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;
        });
    });
}

2 个答案:

答案 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
});