我需要在 Angular 中取消订阅吗
Do I need to unsubscribe from subscribe in Angular
在 Angular 服务中,我有一个函数,它在某些事件上执行。在回调中,我需要从 ngrx 存储中获取一些数据并根据条件对其进行处理。这是一个简化的例子:
export class MyService {
constructor(private store: Store<{}>) {
Library.onSomethingChanged((val) => {
this.store.select(mySelector).pipe(
tap((valueFromStore) => {
if (valueFromStore) {
// do something
}
})
).subscribe()
})
}
}
我不太确定在这种情况下如何处理 subscribe
。如果发生变化,我只需要管道执行一次。这会在每次执行 onSomethingChanged
回调时创建一个新订阅吗?
我认为如果你使用take(1)
你会得到第一个发射并且订阅不会泄漏:
Library.onSomethingChanged((val) => {
this.store.select(mySelector).pipe(
take(1),
tap((valueFromStore) => {
if (valueFromStore) {
// do something
}
})
).subscribe()
在 Angular 服务中,我有一个函数,它在某些事件上执行。在回调中,我需要从 ngrx 存储中获取一些数据并根据条件对其进行处理。这是一个简化的例子:
export class MyService {
constructor(private store: Store<{}>) {
Library.onSomethingChanged((val) => {
this.store.select(mySelector).pipe(
tap((valueFromStore) => {
if (valueFromStore) {
// do something
}
})
).subscribe()
})
}
}
我不太确定在这种情况下如何处理 subscribe
。如果发生变化,我只需要管道执行一次。这会在每次执行 onSomethingChanged
回调时创建一个新订阅吗?
我认为如果你使用take(1)
你会得到第一个发射并且订阅不会泄漏:
Library.onSomethingChanged((val) => {
this.store.select(mySelector).pipe(
take(1),
tap((valueFromStore) => {
if (valueFromStore) {
// do something
}
})
).subscribe()