RXJS主题,在每次首次订阅时返回相同的值

时间:2017-02-10 19:15:06

标签: javascript rxjs reactive-programming

我知道我需要使用startWith,但仍在尝试弄清楚如何使用它。如果我执行Subject.create().startWith("Some Value),则会将Subject变为Observable,而我无法使用next发出。{/ p>

因此,多个订阅者应该可以subscribe。应该可以在next上致电Subject。浏览Subject.create()的文档,但速度很慢。

修改 使用已接受的解决方案后我开始工作了。之前没有工作的原因是因为我将.next调用放在订阅中。

例如:

observable.subscribe((res) => {
// do something
s.next('another res');
}

这会产生无限循环,我认为RXJS会阻止它吗?无论如何,我把next放在那里用于调试目的。我将它移到subscribe块之外,现在初始结果发出,然后当调用next时,subscribe内的任何内容都会再次发出。

1 个答案:

答案 0 :(得分:1)

您应该避免使用Subject.create()并仅使用Subject()。请参阅:Subject vs AnonymousSubject

只需保留对Subject实例的引用以及对所需Observable链的另一个引用:

let s = new Subject();
let observable = s.startWith("Some initial message");

observable.subscribe(...);
s.next('whatever');