Управление подписками: много слов о потоках, отписках и утечке памяти
- Обновлено: 08.09.2016
На первый взгляд Управление подписками — простая задача, но впереди много проблем. Ниже я собрал свои собственные наблюдения о том, как грамотно вести работу с подписками без утечек памяти, увеличения времени загрузки элементов и больших бюджетных затрат.
Я основал библиотеку RXJS, которая работает с Angular frame. Однако поклонники других фреймворков также могут найти это полезным.
Почему это так важно
Подписка на рабочую зону, поток, который может возвращать данные, дает вам большую гибкость и множество возможностей для работы с вашими данными, что позволяет в полной мере использовать все возможности асинхронности. Эта штука действительно удобна и гибка, но за все функции нужно платить. Где-то существует более высокий порог для использования определенной технологии, потому что в некоторых случаях действительно полезные в финансовом отношении вещи очень часто раздаются за определенную плату.
В нашем случае способность полностью манипулировать потоками данных возникает за счет необходимости их контролировать. Звучит странно, но все возможности управления потоком уже предоставляются необходимыми библиотеками, поэтому здесь вам нужно использовать управление, чтобы заплатить за управление. Ключевым моментом является то, что мы можем создавать и изменять потоки разными способами, но на фоне всего этого волшебного фона нам обычно нужно убедиться, что они завершены.
Фактически, это сопоставимо с подписками на новостные ленты, информационные бюллетени с новыми скидками, ненужные уведомления или подписки на платные услуги. В какой-то момент, независимо от полезных ресурсов, на которые мы подписываемся, они перестают приносить нам пользу, и если мы не откажемся от подписки, это может привести к засорению почтового ящика, в котором вы больше не сможете найти нужное сообщение в различных рассылках или спаме.Ежемесячное снятие средств со счета.
В нашем случае отказ от подписки на поток может привести к утечке памяти, увеличению времени загрузки элементов и, в конечном итоге, к потере доступности продукта и удобства работы с пользователем.
