Quiero usar estas dos soluciones junto con RxJS pero no sé cómo hacerlo.
canalice cada dato que emite Observable y tenga la capacidad de actuar como un Subject :
// Sample code, this does not work properly :(, because next is not defined on Observable const dummy = new Subject<number>().pipe( map((num) => num + 1) ); dummy.subscribe((number) => { // expects 4 but get 3 }) dummy.next(3) Quiero emitir datos en todas partes, incluso fuera de la construcción observable como Subscribe , y operar en cada emisión de datos usando el método de canalización como Observable .
Puedo implementar una clase de emisor simple que simule este comportamiento, pero quiero una forma RxJS.
Esta es una abstracción que no existe con RxJS.
Puede construirlo usted mismo definiendo la composición kleisi para los sujetos. Básicamente, haga para los sujetos lo que hace la tubería para los observables.
Los sujetos son observables y observadores, por lo que puede construir la abstracción sobre los operadores que ya existen simplemente rastreando el sujeto de origen.
Entonces, ¿por qué esto no existe ya? En gran parte porque no está claro por qué es útil. Los operadores operan sobre observables y no sobre observadores.
Los sujetos son útiles para la multidifusión (hacer que un frío sea observable en caliente) y para interconectar/establecer puentes entre el código declarativo y el imperativo.
Históricamente, los intentos de integrar (en lugar de solo la interfaz) el diseño de API declarativo e imperativo han estado cargados de una complejidad innecesaria.
En las raras ocasiones en que necesita acceso a un tema y un conjunto de datos de manera imperativa, probablemente sea más claro para API empujar los dos en un objeto o tupla y pasarlos de esa manera. Ampliar el tema con un nuevo tipo de composición simplemente no agrega mucho beneficio, de manera abstracta o concreta.