【发布时间】:2019-06-21 19:01:48
【问题描述】:
如果我创建一个 timer() 并执行一次,例如:
timer(1000).subscribe(() => console.log("some logging"));
我需要退订吗?
文档说:
如果没有指定 period,则输出 Observable 只发出一个值
所以,据我了解RxJS,我猜,timer() 可能会在执行后完成。但我不太确定。没有弹珠图,它显示了一个完整的timer()。
注意
我不是询问如何退订;我需要知道没有给定期间的timer() 是否完成并且不需要取消订阅。
【问题讨论】:
-
在提出问题之前,您是否考虑过实际测试它;)我的意思是,您正在使用
console.log,因此您可以自己建立它,如果文档不够清楚:) -
但我该如何测试呢? console.log 显然记录了 1 时间,然后呢?我如何检查处理程序是否已删除?
-
subscribe() 接受 3 个参数。第三个是完成回调。如果它被调用,则意味着 observable 已经完成。如果已完成,则订阅者将被取消订阅。
-
@JBNizet 谢谢,我忘记了第三个订阅参数。
-
仅供参考,
subscribe还可以选择使用带有next、error和complete属性的“观察者”对象:const myObserver = { next: console.log, error: console.错误,完成: () => console.log('complete') };.subscribe(myObserver)