typescript - 如何在此方法中返回 Promise

标签 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;
        });
    });
}

最佳答案

正如 jfriend 所指出的,您迫不及待地要在 Promise 完成后才返回它。那就本末倒置了。您立即返回 promise ,并将其链接起来等待其完成。

我只是想指出,你应该利用 promise 链来避免滑向“末日之塔”的习惯:

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

关于typescript - 如何在此方法中返回 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41309606/

相关文章:

javascript - 数组数组中对象的总和值

angular - Angular 4 中 Observable 和 Promise 的简单定义

javascript - 使用带有 Promise 的 sinon 进行单元测试

Angular 5 服务无法通过单元测试(NullInjectorError : No provider for HttpClient!)

reactjs - 错误: Final loader didn't return a Buffer or String

Javascript Promise 将值插入数组(仅来自函数或外部?)

javascript - node.js promise 错误未定义函数

javascript - 在 Node.js 中混合 Promise 和递归

typescript - 如何使用 typescript 设置 axiosconfig?

mysql - 无服务器框架、typescript、nodejs 和 mysql - 错误 : Received packet in the wrong sequence