如何链接一个期望来自Observable的参数值的Promise?

时间:2018-03-27 00:03:14

标签: javascript angular promise observable

我有一个可以检索数据的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
    });
});

1 个答案:

答案 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()