我有一个函数返回一个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中的等价物。
任何帮助都将不胜感激。
答案 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);
})
});
}