RxJS v4 раньше имел Observable.transduce
метод, который принимал преобразователь. Это позволило использовать операторы преобразователей, не зависящие от библиотеки, что в прошлом имело значительные преимущества в производительности.
Источники
- https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/transduce.md
- https://github.com/Reactive-Extensions/RxJS/blob/master/doc/gettingstarted/transducers.md
- https://medium.com/front-end-hacking/rxjs-transducers-vs-method-chaining-performance-87561cf4ce65
- https://github.com/ReactiveX/rxjs/pull/1323
В RxJS v5.5 и v6 есть конвейерные операторы, а в v6 удалена цепочка методов. Из-за этого я предположил, что операторы RxJS были стандартными преобразователями. Просматривая исходный код, похоже, что это не так.
Операторы RxJS v6 функционируют как преобразователи, где каждое значение полностью передается по цепочке до того, как пройдет следующее значение, но операторы RxJS v6 не используют стандартные методы преобразователя, которые я видел в других библиотеках, что означает, я не думаю, что они портативны.
Дело в том, что преобразователи ничего не знают о самой коллекции. Вместо того, чтобы писать 100 операторов специально для наблюдаемых, вы можете написать 100 операторов, универсально применимых к любой коллекции или типу потока.
.pipe
единогласно с .transduce
или этот метод был полностью удален в RxJS v5?