Должен ли я отписаться от pipe () в Angular? - PullRequest
1 голос
/ 27 марта 2020

Я прочитал несколько статей о Observable и отписках. Но я не понимаю немного информации о трубе (). Труба автоматически отписывается в некоторых случаях. Каковы эти случаи? У меня есть один сервис для подключения к моему серверу и один компонент. Должен ли я отписаться здесь и используя ngOnDestroy? Это простой сервис для приложения CRUD.

Например, один метод из сервиса:

public getSubject(size:number, page:number) : Observable<Subject[]> {
  return this.http.get<Subject[]>(environment.apiUrl + '/subject?size='+size+'&page='+page)
    .pipe(
      map(data=>{
        return  data;
      }),
      catchError(err => {
        return throwError(err);
      }));
}

И компонент, использующий сервис с разрушителем.

    //...some code
pageClick() {
  this.subscriptions.add(this.connector.getSubject(this.pageSize, this.page - 1)
    .subscribe(data => {                                                                        
      this.subject = data;                                                                                  
      this.errorFlag = false;

    }, error => {                                                             
      this.error = error.error.message;                                                                                          
      this.errorFlag = true;

    }));
}
    //..some code..

@HostListener('window:beforeunload')
ngOnDestroy() {
  this.subscriptions.unsubscribe();
}

1 Ответ

4 голосов
/ 27 марта 2020

Нет необходимости отписываться от завершенного Observable. Когда HttpClient получает ответ от сервера и отправляет его подписке в компоненте Observable, завершается, поэтому он не выдает больше значений. Если значения не передаются, риск утечки памяти отсутствует, что является причиной отказа от подписки.

«В некоторых случаях автоматически отписывается канал» - .pipe используется для изменения потока данных с помощью добавив несколько операторов к нему. Он не несет ответственности за подписку или отписку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...