RXJS 5中的.subscribe()方法不带参数

13

一个快速的问题。我已经使用RxJS 5几个月了,遇到了一些行为,我真的不理解,因为我无法在任何地方查找它。

我的情况是,仅使用.subscribe();订阅一个可观察链并不会触发observable。

但是,如果我添加一个onNext回调(空或非空),则observable会被触发,并且链会处理:.subscribe(() => {});

有人能解释为什么会出现这种行为吗?


你能制作一个演示吗?subscribe()的所有参数都是可选的,它可以在没有任何参数的情况下正常工作。 - martin
在上面的示例中检查了完全相同的函数(现在在RxJS 5.2.0和Ionic 2.2.0上),现在它可以在没有主体的情况下进行处理。我将保持此线程开放,以防问题再次出现。 - DarkNeuron
这在 RxJS 5.2.0 和 Ionic 2.2.0 上仍然对我无效。@DarkNeuron,你改变了其他什么东西吗?例如构建配置、TypeScript 版本或其他什么? - masimplo
2
这个问题已经在rxjs@5.4.2上得到解决。这里有所有细节和解决问题的PR https://dev59.com/lKTia4cB1Zd3GeqP-TdN#45608918 - Damian Hercun
不错的发现。我会关闭它。 - DarkNeuron
显示剩余2条评论
2个回答

12

.subscribe()方法实际上不需要任何参数,如果没有给出参数,它会创建一个emptyObserver对象,这应该同样有效。

然而在一些 5.0.0-beta 版本中可能存在相关问题 - 如果您正在使用其中之一的版本,应该更新到更稳定的版本。

const obs$ = Rx.Observable.of("Foo")
  .do(() => console.log("triggered!"));
  
obs$.subscribe();
obs$.subscribe();
<script src="https://unpkg.com/rxjs@5.1.1/bundles/Rx.min.js"></script>


1
我也在使用RxJS 5.1.1。我会尝试发布一些我的代码示例。 - DarkNeuron

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接