这个Observable是否会造成内存泄漏? 因为每次运行它都会保持初始选择流打开?!?!
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())
})
tx Sean
答案 0 :(得分:1)
简单地拥有一个热的可观察this.store.select
并不会立即暗示你有内存泄漏。您的任务是在该observable上存储对您的订阅的引用,并在完成后将其丢弃。
当我知道我期望有多少元素时,我发现使用.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)