完成Observable.create()时是否需要(或建议)observator.complete()



调用Observable.create时,在运行完所有observer.next()调用后,是否建议调用observer.complete()?同样,如果我们不这样做,这个方法会被自动调用吗?完整方法之后的代码也会运行吗?

我注意到了另一个类似的问题,但答案还不足以让我确定。observer.complete()做什么?

这里有一个简单的例子,

return Observer.create(observer => {
observer.next(1);
observer.next(2);
observer.complete();
console.log("some more code");
});

在调用Observable.create时,在运行了所有observer.next()调用后,是否建议调用observer.complete()

只能用"取决于情况"回答。一般,如果您知道不会再有通知,最好通知您的订阅者该情况。如果你最喜欢的YouTuber在没有通知你的情况下停止播放视频,你不会喜欢的。

然而,complete不仅仅是一个信息。它有效地关闭了您的可观察对象,从而禁止您发送任何更定期的通知。如果您不确定将来是否会发送通知,请不要致电complete。一旦接到电话,特霍尔就不会回来了。

类似地,如果我们不这样做,这个方法会被自动调用吗?

否。如果你从不打complete,你就可以长寿。

完整方法之后的代码也会运行吗?

是的,但如上所述,您不能再向您的订阅者发送任何通知。

在这一点上,我可能应该让你知道可遵守的合同。在我看来,这是一本很难阅读的书(许多不熟悉的术语),但需要完全理解ReactiveX。

最新更新