【问题标题】:What's the elegant way of writing CombineLatest with conditional arguments?用条件参数编写 CombineLatest 的优雅方式是什么?
【发布时间】:2019-04-10 13:02:33
【问题描述】:

在非异步代码中,我执行以下操作:

    const x = [
        ...(isY ? [Y]: []),
        ...(isZ ? [Z] : [])
    ];

isYisZObservables<boolean>,而xObservable<Object[]> 时,您将如何优雅地编写此结构。

我可以使用各种映射来做到这一点,但没有什么看起来干净或优雅。

【问题讨论】:

    标签: arrays merge rxjs combinelatest


    【解决方案1】:

    combineLatest 运算符最适合在您有多个长期存在的observables 时使用,它们相互依赖以进行某些计算或确定。 请注意,combineLatest 在每个 observable 发出至少一个值之前不会发出初始值。

    您可以查看explanationcombineLatest

    const x: Observable<any[]> = combineLatest(isY$, isZ$).pipe(
        map([isY, isZ] => {
            return [
                ...(isY ? [Y]: []),
                ...(isZ ? [Z]: [])
            ]
        })
    )
    

    编辑: 您还可以使用 combineLatest 项目功能,因此它甚至可以通过执行更简洁

    const x: Observable<any[]> = combineLatest(isY$, isZ$, (isY, isZ) => [ 
       ...(isY ? [Y]: []), 
       ...(isZ ? [Z]: []) 
    ])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-12
      • 1970-01-01
      • 2022-06-17
      • 2021-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多