В этом докладе вы узнаете:
— как создаются подписки и как можно о них забыть; — как подписки создают баги прямо у вас в приложении; — почему забытые подписки могут быть опасны; — какого это проводить бессонные ночи в поиске утечек; — как опытные разработчики управляют подписками; — и что случится, если забытых подписок будет много.
Я постарался собрать много интересных фактов.
Самый простой способ отписываться от Observable, это просто не делать подписки. Да! Это весь способ. Вам просто не нужно делать подписки. Но, вы возможно скажете, а как же я получу все необходимые мне данные? Все очень просто, если вы используете Angular, то достаточно просто передать свой Observable в AsyncPipe. Например, это может выглядеть так:
<div *ngFor="source | async"></div><app [data]="source | async"></app>А еще так {{ source | async }}
Все, вы не сделали подписку, значит вам не нужна отписка! Ура! С получением данных разобрались, но как же правильно работать с HttpClient?
При работе с HttpClient могут возникнуть ситуации, когда у вас не получится просто взять AsyncPipe и начать использовать его для подписки. И для того, чтобы раскрыть тему, давайте выделим несколько основных групп:
— отправка Http запросов, когда параметры меняются; — многопоточное получение данных из различных источников; — отправка последовательных запросов; — создание, удаление и обновление данных.
Давайте рассмотрим ситуацию, когда у нас есть некий Http запрос, и нам необходимо получить данные с сервера. Условно он может выглядеть так:
const request = http.get('https://.../api/get');
Отлично, когда у нас есть запрос, мы можем на него подписаться. Давайте это и сделаем:
request.subscribe((response) => console.log(response));
Теперь, когда мы подписались, то совершили очень важную ошибку. Мы забыли отписаться от подписки! Но, вы спросите, а зачем? Мы же получаем данные и HttpClient сам завершит поток, когда придут данные.