Разница между проверкой (...) и подпиской (...) в rxjs - PullRequest
0 голосов
/ 25 марта 2019

Я погуглил вопрос, ожидая, что передо мной тоже спросят любопытные люди.По некоторым причинам, большинство обращений находится на сканировании против уменьшения (что я ясно понимаю).Так что есть риск, что я полностью неправильно понял документы.

В соответствии с документами, scan (...) перехватит выданное значение, сделает что-то с этим и затем, при необходимости, передаст егона следующий человек в очереди.Между тем, subscribe (...) , хотя и принимает параметры для обработки ошибок и завершения, делает то же самое.

Я понимаю «разницу» между ними, но мне кажется,как весьма незначительный с точки зрения инструментов разработки.Неужели это так просто, как первый, только удобный метод для случаев, когда второму потребуется обычное кодирование?Или есть принципиальная разница между ними (например, что-то, что я могу сделать со сканированием, но не могу добиться подписки)?

1 Ответ

1 голос
/ 25 марта 2019

Scan () и Subscribe () - это совершенно разные понятия в RxJS.

Сканирование - это оператор для объединения значений, поступающих через поток, с предыдущими значениями, прошедшими через поток, и последующего вывода некоторой их комбинации (я думаю, что сканирование и уменьшение - единственные операторы, которые делают это) , Подписаться работает только на текущее значение, которое поступает через поток.

Подписаться - это особый метод и одно из самых важных понятий в RxJS. Подписка происходит в конце потока Observable, здесь вы можете использовать полученное значение для чего-либо. От всех других операторов вы возвращаете что-то, что может быть передано по цепочке, но вы не возвращаетесь из подписки.

Если вы работаете с холодными Observables (которые вы очень часто), вам нужно подписаться на него, чтобы код вообще работал. Если у вас нет подписок для холодной наблюдаемой, то ни один код в вашем потоке наблюдаемых не будет работать.

Синтаксис их использования также различен. Сканирование - это оператор, который вы связываете внутри метода pipe (), например map, Reduce, Filter, Tap, MergeMap, FlatMap и т. Д. Он выглядит следующим образом:

myObservable$.pipe(map(...), scan(...), flatMap(...));

Subscribe - это такой метод, как pipe, который вы ставите, как точка:

myObservable$.pipe(...).subscribe(...);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...