gpt4 book ai didi

rxjs - 如何从 ReplaySubject 获取最后一个值?

转载 作者:行者123 更新时间:2023-12-03 15:37:15 26 4
gpt4 key购买 nike

下面是一个描述我正在尝试做的事情的片段。在我的应用程序中,我有一个贯穿始终的 replaysubject。在某个时候,我想获得主题发出的最后一个值,但是 last似乎不适用于 ReplaySubject。

const subject = new Rx.ReplaySubject();

subject.next(1);
subject.next(2);
subject.next(3);
subject.next(4);

subject.subscribe(num => console.log(num));

var lastObserver = subject.last();
lastObserver.subscribe(num => console.log('last: ' + num));

FIDDLE

上面的代码不会为 lastObserver 触发任何东西,但订阅工作得很好。

最佳答案

也许你的困惑是关于 .last()运营商应该工作?
.last()应该等待流完成,然后为您提供流结束前发出的最后一个值。所以为了让它工作,流需要结束。

我相信你的 lastObserver将在主题完成后立即发出。

const subject = new Rx.ReplaySubject();

subject.next(1);
subject.next(2);
subject.next(3);
subject.next(4);

subject.subscribe(num => console.log(num));
subject.complete(); // end your stream here
var lastObserver = subject.last();
lastObserver.subscribe(num => console.log('last: ' + num));

如果您不希望流结束,但确实希望订阅者收到订阅前发出的最后一个值,请考虑联系 BehaviorSubject ,这是为这个用例设计的。

关于rxjs - 如何从 ReplaySubject 获取最后一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46437704/

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