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

标签 javascript angular promise observable

我有一个检索数据的可观察对象,这些值是来自 Promise 的参数。加入这些值以使 Promises 期望来自 observable 的值并且不会导致错误的更好方法是什么?

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
  });

另一种方法是在可观察对象中调用 promise ,但我不确定将参数传递给可观察对象的最佳方法是什么。

this.UserService.getUserData().subscribe(user => {
    this.UserConfiguration.getSettings(user.name, user.id)
        .then(res => {
          settings = res.settings;
          debugger
    });
});

最佳答案

this.UserService.getUserData().switchMap((data) => 
    Observable.fromPromise(this.UserConfiguration.getSettings(data.user, data.id))
    .subscribe((result) => this.settings = result.settings));

编辑:我正在简化答案以仅包含不可出租的版本。如果您需要可出租的运算符,只需 pipe(switchMap).subscribe() 即可。

关于javascript - 如何链接一个期望来自 Observable 的参数值的 Promise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49502448/

相关文章:

javascript - 如何在 Electron 浏览器窗口中查看PDF?

javascript - :click function updates data, 上的 Svelte,但 UI 上没有

angular - clearvalidators() 未按预期与 Angular 中的表单重置方法一起工作

javascript - 在数组javascript的排序功能中实现异步/等待

javascript - Node.js 中回调和 Promise 的区别

javascript - 如何在第一次点击后禁用触发点击

javascript - 使用 Javascript 创建图像映射

angular - 函数内的函数不是函数并且未定义

angular - 如何在链接的 observables 之间传递结果

javascript - 如何编写通用的可重用的 Promise then/catch 处理程序?