Зачем нам нужен оператор Tap в Rxjs - PullRequest
0 голосов
/ 07 октября 2019

Я новичок в Rxjs и наблюдаю за одним из руководств Дэвида Акосты, касающихся операторов Rxjs. При этом он говорил, что когда нам не нужно трогать данные наблюдаемой, мы можем использовать оператор касания. Таким образом, данные внутри функции касания не будут изменены.

Я написал следующий код

 const source = Observable.of("david");

    source.pipe(
      tap(x => x.toString().toUpperCase())
    ).subscribe(x => console.log(x));

Я получил вывод как david. Но мне было интересно, как

source.subscribe(x => console.log(x));

дает тот же результат david. Тогда зачем нам оператор крана. Для меня это было загадкой, и я не смог найти для себя подходящий ресурс, который объясняет оператор TAP

Может ли кто-нибудь подробно объяснить мне это и предложить мне несколько хороших руководств или документации для операторов Rxjs?

1 Ответ

0 голосов
/ 07 октября 2019

Оператор касания обычно используется в 2 случаях:

1- Сохранение / просмотр значение наблюдаемого потока:

const source = Observable.of("david");

let name;

source.pipe(
   tap(x => name = x)
).subscribe(x => console.log(x));

console.log('variable name: ', name);

2- Выполнение некоторых побочный эффект , который вы хотите выполнить в каком-то месте конвейера (не при подписке):

clickStream$.pipe(
   tap((event) => {
       event.stopPropagation();
       event.preventDefault();
   }),
   debounce(300),
   map((event) => event.key)
).subscribe((key) => console.log('key debounced: ', key)) 

Примечание : будьте осторожны, используя оператор касания для выполненияпобочные эффекты в вашем коде. Некоторые из них оправданы и правильны, но другие можно решить, просто выполнив свой побочный эффект при обратном вызове .subscribe.

Надеюсь, это поможет!

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