这个 Observable 会造成内存泄漏吗?
Will this Observable create a memory leak?
这个 Observable 会造成内存泄漏吗?
因为每次你 运行 它,它都会保持初始 select 流打开?!?!
return this.store.select(store => store.appDb.appBaseUrl)
.mergeMap(url => {
return this.http.get(url)
.debug('received ' + url)
.map(res => res.json())
})
如果是这样,添加 take(1) 是否可以解决问题?
return this.store.select(store => store.appDb.appBaseUrl)
.take(1) // <--------------- stop after 1?
.mergeMap(url => {
return this.http.get(url)
.debug('received ' + url)
.map(res => res.json())
})
发送肖恩
仅仅拥有一个热可观察对象 this.store.select
并不立即意味着您有内存泄漏。您的任务是在该可观察对象上存储对您的订阅的引用,并在完成后将其处置。
我发现用 .take(X)
注释我的流是很有帮助的,这是我知道我期望有多少元素时做的最后一件事,因为这将使流在发出预期数量后自动处理。
return this.store.select(store => store.appDb.appBaseUrl)
.mergeMap(url => this.http.get(url)
.debug('received ' + url)
.map(res => res.json())
)
.take(1)
这个 Observable 会造成内存泄漏吗? 因为每次你 运行 它,它都会保持初始 select 流打开?!?!
return this.store.select(store => store.appDb.appBaseUrl)
.mergeMap(url => {
return this.http.get(url)
.debug('received ' + url)
.map(res => res.json())
})
如果是这样,添加 take(1) 是否可以解决问题?
return this.store.select(store => store.appDb.appBaseUrl)
.take(1) // <--------------- stop after 1?
.mergeMap(url => {
return this.http.get(url)
.debug('received ' + url)
.map(res => res.json())
})
发送肖恩
仅仅拥有一个热可观察对象 this.store.select
并不立即意味着您有内存泄漏。您的任务是在该可观察对象上存储对您的订阅的引用,并在完成后将其处置。
我发现用 .take(X)
注释我的流是很有帮助的,这是我知道我期望有多少元素时做的最后一件事,因为这将使流在发出预期数量后自动处理。
return this.store.select(store => store.appDb.appBaseUrl)
.mergeMap(url => this.http.get(url)
.debug('received ' + url)
.map(res => res.json())
)
.take(1)