rxjs.Это хорошая практика, чтобы иметь код в метод подписки? - PullRequest
0 голосов
/ 05 марта 2019

Я помню, однажды я нашел рекомендацию избегать использования кода в методе subscribe и использовать вместо него каналы.

// suppose bad
observable.subscribe(() => dosmg())

// suppose good
observable
    .pipe(tap(() => dosmg()))
    .subscribe()

Причина была связана с дрожанием дерева.Второй вариант подсказывает лучшую оптимизацию.В настоящее время я не могу найти эту рекомендацию, а также противоположную рекомендацию.И многие учебные материалы, с которыми я столкнулся, добавляют код в методе subscribe без объяснений.Все еще рекомендуется использовать каналы вместо кода в subscribe?

1 Ответ

0 голосов
/ 05 марта 2019

Я обычно избегаю ставить логику в подписке.

Прелесть функционального кодирования в том, что вы можете комбинировать, архивировать, объединять и расширять свои наблюдаемые объекты.

Если вы добавляете логику в подписку, она просто теряет переносимость и ее сложнее реорганизовать на более позднем этапе.Вот типичный сценарий объединения потоковых нарезок

const stream1=observable
    .pipe(tap(() => dosmg()))

const stream1WithLoggin=stream1.pipe(tap(message=>console.log(message))
const stream1WithHttp=stream1.pipe(mergeMap(message=>fetch(someurl))
...