gpt4 book ai didi

rxjs - 从多个来源获取最后发出的对象

转载 作者:行者123 更新时间:2023-12-02 02:58:54 25 4
gpt4 key购买 nike

更具体地说,我不需要发射对象的数组。我想要任一源发出的最后一个对象。

目前,它是这样工作的

.withLatestFrom(subject1, subject2)
.switchMap([val1, val2]) => {...}

我想要的是

.withLatestFrom(subject1, subject2)
.switchMap(latestVal) => {...}

避免可能的 x=y 问题。我有两个科目。主题 1 和主题 2。

如果 subject2 发出了任何值,该值将始终胜过 subject1。在我的用例中,一旦主题 2 开始发出,这个特定模块将忽略主题 1。但是主题 1 将在其他地方使用。

但我想要一种方法将这两个主题作为源提供,并获取最后发出的值,或者主题 2 的最后一个值(如果它不为空)。如果主题 2 为空,则从主题 1 获取最后一个值。

最佳答案

这是一个我认为可以满足您要求的示例:

const first = Rx.Observable.interval(1000).map(x => `first (${x})`);
const second = Rx.Observable.interval(2000).map(x => `second (${x})`);

Rx.Observable.merge(
first.takeUntil(second),
second
)
.subscribe(
x => { console.log('next: ', x); },
null,
() => { console.log('complete'); }
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.5.5/Rx.min.js"></script>

takeUntil 将导致“第一个”可观察对象在“第二个”可观察对象第一次发出时停止为该订阅发出值。

关于rxjs - 从多个来源获取最后发出的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47703166/

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