在调用Observable.create时,在运行所有observer.next()调用之后,是否建议调用observer.complete()?同样,如果不这样做,是否会自动调用此方法?完整方法之后的代码也可以运行吗?
我注意到了另一个与此类似的问题,但是答案不足以使我确定。 What does observer.complete() do?
这是一个简单的例子,
return Observer.create(observer => {
observer.next(1);
observer.next(2);
observer.complete();
console.log("some more code");
});
答案 0 :(得分:2)
在调用Observable.create时,建议在运行所有observer.next()调用之后,再调用observer.complete()
只能用“取决于”来回答。 是,如果您知道不会再有任何通知,那么最好将这种情况通知您的订户。如果您最喜欢的YouTuber在没有通知您的情况下停止播放视频,您就不会喜欢它。
但是,complete
不仅仅是一种信息。它有效地关闭了您的可观察对象,从而禁止您发送更多常规通知。如果不确定将来是否会发送通知,请不要致电complete
。接到电话后,tehre就再也不会回来。
类似地,如果我们不这样做,是否会自动调用此方法?
不。如果您从不致电complete
,您将获得一个长寿的Observable。
完整方法之后的代码也可以运行吗?
是的,但是如上所述,您不能再向订阅者发送任何通知。
在这一点上,我可能应该让您知道of the Observable Contract。在我看来,这是一个艰难的阅读(很多陌生的术语),但是需要充分理解ReactiveX。