【发布时间】:2019-07-10 10:06:22
【问题描述】:
我必须在另一个 API 调用(返回 Observable)之后进行 API 调用(返回 Promise)。
userService.getAuthUser() 返回一个Observable。
userService.updateUser() 返回一个Promise。
我可以通过将updateUser() 放入getAuthUser() 来实现这一点
this.userService.getAuthUser().subscribe((res) =>{
this.userService.updateUser(res.id, <User>({
name: 'Sample Name'
})).then((res) =>{
console.log('update user success');
}).catch((err) => {
console.log('update user failed');
})
},
(err) => {
console.log('get auth user failed');
})
但我觉得这样做不太好,有点回调地狱,还有更好的方法吗?
注意:我无法将 userService.updateUser() 更改为 Observable。
【问题讨论】:
-
您依赖于 observable 为下一个
updateUser()部分返回的值。所以这很好。如果您想拥有更简洁的代码,请创建另一个方法来使用参数更新用户并在 subscribe 中调用它 -
您可以将 Observable 转换为 Promise 并链接 Promise。 stackoverflow.com/questions/36777284/…stackoverflow.com/a/54710279/495157
-
您还可以将 Promise 转换为 Observable stackoverflow.com/questions/39319279/… stackoverflow.com/questions/37771855/…
标签: angular rxjs es6-promise