Я следую руководству на https://angular.io , и у меня проблемы с поиском документации; специально для методов pipe
и tap
. Я ничего не могу найти на https://angular.io или http://reactivex.io/rxjs/ .
Я понимаю, что pipe
и tap
являются оба метода Observable
, который импортируется из RxJS, правильно? Что им делать?
Являются ли эти методы частью Angular? Что делают эти два метода?
Ответы:
Вы правы, в документации этих методов нет. Однако , когда я копал в rxjs хранилище, я нашел хорошие комментарии о кране (слишком долго , чтобы вставить здесь) и трубные оператор:
Вкратце:
Труба : используется для объединения функциональных операторов в цепочку. Раньше мы могли просто это сделать
observable.filter().map().scan()
, но поскольку каждый оператор RxJS является отдельной функцией, а не методом Observable, нам нужноpipe()
создать цепочку этих операторов (см. Пример выше).Нажатие : может вызывать побочные эффекты с наблюдаемыми данными, но никак не изменяет поток. Раньше назывался
do()
. Вы можете думать об этом так, как если бы наблюдаемый был массивом с течением времени, тогда онtap()
был бы эквивалентомArray.forEach()
.источник
do
которые были переименованы вtap
... Короче говоря, это беспорядок. github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.mdfilter
работает аналогичноArray.filter
- сохраняет только значения, удовлетворяющие правилу (в данном случае делимые на 2);map
(снова какArray.map
) изменяет каждое значение (в данном случае добавляет его самому себе);scan
наиболее интересно, и вот хорошее объяснение: learnrxjs.io/operators/transformation/scan.html