【问题标题】:Which rxjs operator to use?使用哪个 rxjs 运算符?
【发布时间】:2020-07-03 21:28:08
【问题描述】:

我有一个对象:

let settings = {
    user: {},
    page: {}
}

还有两个请求:

getUserSettings(): Observer<UserSettings> {
    return http.get();
}

getPageSettings(): Observer<PageSettings> {
    return http.get();
}

我需要将它们都称为独立的,一个的结果对另一个结果没有影响,但结果会得到完整的对象settings

【问题讨论】:

  • 你已经标记了多个版本的 RxJS。假设6.xforkJoin 是您可能想要的。两个请求都必须在组合的 observable 完成之前完成。
  • 如果其中一个观察者失败了怎么办? ForkJoin 是否适用于其他人?
  • forkJoin 正在等待所有观察者?
  • 请参考我为forkJoin链接的文档页面。 "forkJoin 将等待所有传递的 observables 完成..." + "如果在某些时候任何输入 observable 错误,forkJoin 也会出错,并且所有其他 observables 将立即取消订阅。"
  • 请详细说明具体版本

标签: rxjs


【解决方案1】:

您可以使用 forkjoin 来执行此操作。此函数将接受可观察的数组。

import { forkJoin } from 'rxjs';
import { map } from 'rxjs/operators';

forkjoin([getUserSettings(), getPageSettings()])
   .pipe(map(res) => {user: res[0], page: res[1}) // remove this if you don't need the exact setting object as final result
   .subscribe((res) => {
     // settings object
   });

【讨论】:

    猜你喜欢
    • 2021-01-02
    • 2021-01-31
    • 2017-02-18
    • 2022-01-03
    • 2021-01-16
    • 2017-04-28
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多