Какой смысл использовать SubSink вместо массива подписок - PullRequest
2 голосов
/ 20 мая 2019

Я только что посмотрел видео ngConf о том, как Джон Папа рассказывает о SubSink как о наилучшей практике для отказа от подписки на материалы.

Я на самом деле использовал подписки [], затем вставлял в нее подписки, а затем для каждой отписки на cmp destroy.

Я что-то пропустил или это просто улучшение читаемости для использования SubSink?

1 Ответ

2 голосов
/ 20 мая 2019

Принятие этого способа имеет как минимум одно огромное преимущество - вы перемещаете этот код за пределы логики своего приложения. Я думаю, что это главное преимущество. Потому что отписаться это просто уборка. Это не связано с логикой, которую вы создаете в своем приложении. Как в вашем доме, вы не оставляете уборочное оборудование в комнате (@Component). Вы кладете это в закрытое, чтобы вас это не беспокоило.

И, продвигаясь на один шаг вперед, вы можете опустить ngOnDestroy в компонентах, создать один адаптер с NgOnDestroy и разместить всю логику там (теперь ваше уборочное оборудование размещается только в одной комнате (@Component). теперь беспокоит еще меньше.

import { OnDestroy } from '@angular/core';
import { SubSink } from './sub-sink';

/**
* A class that automatically unsubscribes all observables when 
* the object gets destroyed
*/
export class UnsubscribeOnDestroyAdapter implements OnDestroy {

/**The subscription sink object that stores all subscriptions */
subs = new SubSink();

/**
* The lifecycle hook that unsubscribes all subscriptions 
* when the component / object gets destroyed
*/
ngOnDestroy(): void {
   this.subs.unsubscribe();
}

Как автоматически отписаться от ваших наблюдаемых RxJs

Кроме этого, это очень маленький пакет, всего несколько строк кода. Спасибо, что поделились :) Я обязательно буду им пользоваться.

...