如何从Angular 2中的另一个Promise函数调用一个Promise函数?

时间:2016-08-23 20:43:11

标签: javascript angular typescript promise

我有一个函数返回一个Promise,它需要调用另一个返回Promise的函数:

getUser(): Promise<User> {
    this.getAPIUser().then(result => {
        ..Do some stuff with result..
        return Promise.resolve(result);  // This doesn't work
    });
}

getAPIUser(): Promise<User> {
    return Promise.resolve({ firstName: 'Jason' });
}

我认为这不起作用,因为getUser&#34;返回Promise.resolve&#34;是在getAPIUser然后处理程序的上下文中。这在Angular 1中非常简单,您只需实例化$ q对象,然后在需要的任何地方解析该对象。我无法弄清Angular 2 / Typescript / EM6中的等价物。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:6)

您的getUser方法根本没有回复承诺 当您在promise上调用then方法时,它会返回Promise,这就是您的方法需要返回的内容:

getUser(): Promise<User> {
    return this.getAPIUser().then(result => {
        ..Do some stuff with result..
        return result;
    });
}

答案 1 :(得分:1)

为了完整起见,这也有效:

getUser(): Promise<User> {
    return new Promise((resolve) => {
        this.getAPIUser().then(user => {
            resolve(user);
        })
    });
}