【发布时间】:2025-12-04 11:15:02
【问题描述】:
在我们的应用中,我们使用的地方很多:
someObservable.take(1).subscribe(onSuccessHandler, onFailureHandler);
但是对于订阅,您需要担心在某些时候取消订阅,这并不总是那么简单。
我正在考虑将其简化并将其重写为:
someObservable.toPromise().then(onSuccessHandler).catch(onFailureHandler);
但是查看toPromise() (here) 的实现,我似乎不明白为什么它不关心退订。
代码中的注释说不能取消,但是我们如何让它这样泄漏内存(如果我们真的是这样的话)。
编辑
我想出了一个让我担心的例子:
Observable.timer(10, 10).toPromise().then((v) => console.log("I'm done"));
如果我检索到的 observables 永远不会完成,那么不仅我的 promise 永远不会以一个值完成,而且我也无法取消订阅这些 observables(例如超时它们和我的 promise),因为我有无权访问订阅对象。这确实会泄漏内存!
【问题讨论】:
标签: javascript promise rxjs observable