Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript RXJS Subject,在每次订阅时返回相同的值_Javascript_Rxjs_Reactive Programming - Fatal编程技术网

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');