gpt4 book ai didi

javascript - RxJS 将当前值推送给迟到的订阅者

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:05:04 25 4
gpt4 key购买 nike

以下是我用作示例的 HTML 片段:

<html>
<head>
<script src="rx.all.js"></script>
</head>
<body>
<script>
var source = new Rx.BehaviorSubject(function() {return 2;});

var stuff = source.scan([], function(val, operation) {
return operation(val);
});

stuff.subscribe(function(v) {
console.log("first subscriber");
console.log(v);
});

source.onNext(function(val) {
return val * 2;
});

stuff.subscribe(function(v) {
console.log("second subscriber");
console.log(v);
});
</script>
</body>

JS控制台的输出是:

first subscriber
2
first subscriber
4
second subscriber
0

现在,“stuff”会做一些处理(基本上是将函数应用于当前值),这是我从 ReactJs + RxJS ( https://github.com/fdecampredon/react-rxjs-todomvc ) 的 TodoMVC 示例中得到的想法。

我试图实现的输出是让第二个订阅者在订阅时也看到“4”。我将 RxJS 与 ReactJS 结合使用,因此组件在卸载时取消订阅(由于路由更改),并在再次安装时再次订阅。

最佳答案

使用 replay(1) 将您的 stuff 变成一个热的可观察对象,它会记住最后的值并将其提供给后来者:

var stuff = ...;
stuff = stuff.replay(1);

// go ahead and start it listening
// you could use .refCount() here also
var subscription = stuff.connect();

// now subscribe your observers
stuff.subscribe(...);

// send some results
source.onNext(...);
source.onNext(...);

// subscribe another observer
// will see the lastest value
// as well as any new values
stuff.subscribe(...);

source.onNext(...);
// ...

关于javascript - RxJS 将当前值推送给迟到的订阅者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25381976/

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