В настоящее время я проверяю, нет ли в моем приложении утечек памяти. Я следую этому учебнику, где он показывает, как перейти с использования subscribe()
на async
, а также показывает, как явно отписаться во время ngOnDestroy
.
Я изо всех сил пытаюсь проверить, работает ли моя реализация, и я хотел знать, действительно ли моя реализация этого в моем проекте отписывается.
Вот что есть в уроке в его компоненте:
@Component({
/* ... */
template: `
<ul *ngIf="todos.length > 0">
<li *ngFor="let todo of todos">{{todo.name}}</li>
</ul>
`
})
export class TodosComponent implements OnInit, OnDestroy {
private unsubscribe$ = new Subject<void>();
todos: Todo[];
constructor(private store: Store<State>) {}
ngOnInit() {
this.store
.pipe(select(selectTodos), takeUntil(this.unsubscribe$)) // unsubscribe to prevent memory leak
.subscribe(todos => this.todos = todos); // unwrap observable
}
ngOnDestroy(): void {
this.unsubscribe$.next();
this.unsubscribe$.complete();
}
}
Мой ngOnDestroy выглядит точно так же, как и его, но вот так выглядит мой звонок в сервис:
this.insightsService.getLatestsInsights(5)
.pipe(takeUntil(this.unsubscribe$))
.subscribe(z => {
if (z != null) {
this.latestInsights = z;
this.visibleSlides = z.slice(0, this.amountOfSlidesToShow);
}
})
Итак, сервис работает, но я просто хочу знать, правильна ли моя реализация? Я не был уверен, что функция выбора была также или это применимо только к тому, что он использует. Дайте мне знать, если я смогу предоставить информацию.