我有一个可以检索数据的observable,这些值是来自Promise的参数。连接这些值的更好方法是什么,以便Promises期望值可观察,这不会导致错误?
let user, id, settings;
this.UserService.getUserData().subscribe(user => {
user = user.name;
id = user.id;
});
this.UserConfiguration.getSettings(user, id)
.then(res => {
settings = res.settings;
debugger
});
其他方式是在observable中调用promise,但我不确定将参数传递给observable的最佳方法是什么。
this.UserService.getUserData().subscribe(user => {
this.UserConfiguration.getSettings(user.name, user.id)
.then(res => {
settings = res.settings;
debugger
});
});
答案 0 :(得分:2)
this.UserService.getUserData().switchMap((data) =>
Observable.fromPromise(this.UserConfiguration.getSettings(data.user, data.id))
.subscribe((result) => this.settings = result.settings));
编辑:我简化了答案,只包含不可出租的版本。如果您需要可调整的运算符,请改为pipe(switchMap).subscribe()
。