gpt4 book ai didi

javascript - RXJS 中的条件连接?

转载 作者:行者123 更新时间:2023-12-01 01:38:35 25 4
gpt4 key购买 nike

我有两个流:

const sourceOne = of(1, 2, 3);
const sourceTwo = of(4, 5, 6);
const example = sourceOne.pipe(concat(sourceTwo)); //123456

如您所见,我已无条件地将它们连接起来。

但事实证明,仅当 sourceOne 中的第一项为“偶数”时,我才需要连接它们。 (%2==0)

问题:

如何通过添加有关第一个流的条件将 sourceTwo 连接到 sourceOne

我知道我可以创建一个将通过管道传输的外部方法,但我不认为这是 RXJS 的做法。

最佳答案

如果 sourceOne 是一个冷 Observables,如您的示例所示,那么您可以尝试按照以下方式进行操作

const example = sourceOne.pipe(
take(1),
switchMap(d => d % 2 === 0 ? sourceOne.pipe(concat(sourceTwo)) : empty()),
)

如果sourceOne是一个热门的Observable,你可以尝试这样的事情

const sourceOneHot = of(1, 2, 3).pipe(share());
const exampleHot = sourceOneHot.pipe(
take(1),
switchMap(d => d % 2 === 0 ? concat(of(d), sourceOneHot, sourceTwo) : empty()),
);

要创建一个可以使用的热源 Observable

关于javascript - RXJS 中的条件连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52622499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com