【发布时间】:2021-12-06 10:15:31
【问题描述】:
我有一部分代码检查两个可观察对象是否是最新的,如果是,则返回第二个可观察对象:
combineLatest([$source1, $source2]).pipe(
filter(([source1, source2]) => source1.id === source2.id),
map(([_, source2]) => source2)
);
如何简化代码?
【问题讨论】:
-
你现在拥有的有什么问题?它看起来非常简短和富有表现力。您可以将其移动到自定义运算符中以将其隐藏在更大的上下文中,但除此之外我在这里没有什么可做的。
-
我只是在考虑是否能够重构此代码。也许有一个 rxjs 操作员做这些事情,我不知道操作员。
-
对我来说看起来很简单,至少我想不出更简单的方法。它是否像它应该做的那样工作?
-
可能是
groupBy(source => source.id, identity)。它不会完成完全相同的事情,但它也可能会做你想做的事。 -
哦,你需要使用 concat 或类似的东西而不是 combineLatest 才能工作。
标签: javascript rxjs reactive-programming rxjs-pipeable-operators combinelatest