Javascript RXJS Subject,在每次订阅时返回相同的值
我知道我需要使用Javascript RXJS Subject,在每次订阅时返回相同的值,javascript,rxjs,reactive-programming,Javascript,Rxjs,Reactive Programming,我知道我需要使用startWith,但仍在尝试如何使用它。如果我只执行Subject.create().startWith(“某个值),它会将Subject变成一个可观察的,并且我不能使用next来发射 因此,多个订阅者应该能够订阅它。应该能够调用主题上的下一个。浏览主题的文档。create(),但是速度很慢 编辑: 我在使用已接受的解决方案后使其工作。它以前不工作的原因是我将.next调用放在订阅中 例如: 这创建了一个无限循环,我想RXJS阻止了它?无论如何,为了调试的目的,我把next放在
startWith
,但仍在尝试如何使用它。如果我只执行Subject.create().startWith(“某个值)
,它会将Subject
变成一个可观察的
,并且我不能使用next
来发射
因此,多个订阅者应该能够订阅它。应该能够调用主题上的下一个。浏览主题的文档。create()
,但是速度很慢
编辑:
我在使用已接受的解决方案后使其工作。它以前不工作的原因是我将.next
调用放在订阅中
例如:
这创建了一个无限循环,我想RXJS阻止了它?无论如何,为了调试的目的,我把next
放在那里。我把它移到subscribe
块之外,现在初始结果发出,然后当调用next
时,无论subscribe
中的内容都会再次发出。Subject.create()
并仅使用Subject()
。请参阅:
只需保留对主题实例的引用和对所需可观察链的另一个引用:
let s = new Subject();
let observable = s.startWith("Some initial message");
observable.subscribe(...);
s.next('whatever');
我试过这样做,但是当我在s
上调用next
时,observable没有发出。谢谢martin,我认为RXJS在我为了调试目的将next
放在订阅中时阻止了我愚蠢的无限循环。将它移到了一边,现在initial和next都通过了。
let s = new Subject();
let observable = s.startWith("Some initial message");
observable.subscribe(...);
s.next('whatever');