Scan () и Subscribe () - это совершенно разные понятия в RxJS.
Сканирование - это оператор для объединения значений, поступающих через поток, с предыдущими значениями, прошедшими через поток, и последующего вывода некоторой их комбинации (я думаю, что сканирование и уменьшение - единственные операторы, которые делают это) , Подписаться работает только на текущее значение, которое поступает через поток.
Подписаться - это особый метод и одно из самых важных понятий в RxJS. Подписка происходит в конце потока Observable, здесь вы можете использовать полученное значение для чего-либо. От всех других операторов вы возвращаете что-то, что может быть передано по цепочке, но вы не возвращаетесь из подписки.
Если вы работаете с холодными Observables (которые вы очень часто), вам нужно подписаться на него, чтобы код вообще работал. Если у вас нет подписок для холодной наблюдаемой, то ни один код в вашем потоке наблюдаемых не будет работать.
Синтаксис их использования также различен. Сканирование - это оператор, который вы связываете внутри метода pipe (), например map, Reduce, Filter, Tap, MergeMap, FlatMap и т. Д. Он выглядит следующим образом:
myObservable$.pipe(map(...), scan(...), flatMap(...));
Subscribe - это такой метод, как pipe, который вы ставите, как точка:
myObservable$.pipe(...).subscribe(...);