在非异步代码中,我执行以下操作:
const x = [
...(isY ? [Y]: []),
...(isZ ? [Z] : [])
];
你将如何优雅地编写这个结构 whenisY
和isZ
areObservables<boolean>
以及x
to be an Observable<Object[]>
.
我可以用各种映射来做到这一点,但没有什么看起来干净或优雅。
在非异步代码中,我执行以下操作:
const x = [
...(isY ? [Y]: []),
...(isZ ? [Z] : [])
];
你将如何优雅地编写这个结构 whenisY
和isZ
areObservables<boolean>
以及x
to be an Observable<Object[]>
.
我可以用各种映射来做到这一点,但没有什么看起来干净或优雅。
combineLatest
observables
当您有多个相互依赖以进行某些计算或确定时,最好使用运算符。请注意,combineLatest
在每个 observable 发出至少一个值之前,它不会发出初始值。
你可以看看解释。combineLatest
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]: [])
])