Вариант использования оператора Observable .do() (rxjs)


person soywod    schedule 04.12.2016    source источник


Ответы (2)


Обновить

Теперь это pipe( tap(...), ) вместо do()

Исходный

.do() должен выполнять код для каждого события. Отличие от .map() заключается в том, что возвращаемое значение .do() игнорируется и не меняет значение, которое получает подписчик.

person Günter Zöchbauer    schedule 04.12.2016
comment
Хорошо, я вижу, это для обработки без изменения потока. Но я не понимаю, почему это работает без subscribe ? do делает то же самое? Можете ли вы привести несколько примеров? Спасибо за ваш ответ в любом случае - person soywod; 04.12.2016
comment
@Soywod Подписка есть: просто не в вашем коде. Маршрутизатор подписывается на наблюдаемый объект, возвращенный вашим сторожем, чтобы узнать, может ли он активироваться или нет. - person JB Nizet; 04.12.2016
comment
Итак, я прав, говоря, что побочный эффект в вызове do() будет выполняться после функции подписчика маршрутизатора? - person codemonkey; 19.08.2017
comment
@ user2153465 router.navigate будет вызываться, когда наблюдаемый объект, возвращаемый this.auth, выдает первое значение. - person Günter Zöchbauer; 19.08.2017
comment
Могу ли я использовать наблюдаемое остроумие, не делясь наблюдаемым? - person Franki1986; 29.05.2019
comment
@ Franki1986 Конечно, но вам нужно subscribe(), иначе исполняемый файл ничего не сделает, а также не вызовет do(...). - person Günter Zöchbauer; 29.05.2019
comment
Привет @GünterZöchbauer. Оператор do все еще присутствует в RxJS. Я просматривал документацию сегодня и не мог ее найти. Если его убрать, есть ли замена этому оператору. - person Kiran Dash; 14.09.2019
comment
Сейчас tap() - person Günter Zöchbauer; 14.09.2019

Теперь это pipe( tap(...), ) вместо do()

const source = of(1, 2, 3, 4);
source.pipe(
  tap(val => console.log('I am tap: ',val)),
  filter(val =>  val > 2),
  map(val => val + 1)).subscribe((val) => {
  console.log('I am subscriber value after filtering: ', val);
});

Вывод:

I am tap:  1
I am tap:  2
I am tap:  3
I am subscriber value after filtering:  4
I am tap:  4
I am subscriber value after filtering:  5

*Тап оператор ничего не изменяет, можно сказать, что он просто для просмотра потока.

person Muhammad Bilal    schedule 26.02.2020