将逻辑分解为“任务”或可重用的转换是一种很好的做法。然后,您可以将它们组合在一起以创建更复杂的数据转换管道,并针对不同情况进行定制。
function masterTransform( data$ ){
return data$.map( extractData )
.map( doSomething("master"))
.map( anotherThing )
.distinctUntilChanged()
.scan( (a,b) => a + b, 0 );
}
function slaveTransform( data$ ){
return data$.map( extractData )
.map( doSomething("slave"))
.flatMapLatest( combineOtherSource )
.scan( (a,b) => Math.max(a,b), 0 );
}
let stream$ = cluster.isMaster
? service.getMasterData().let( masterTransform )
: service.getSlaveData().let( slaveTransform );
stream$.subscribe( data => console.log( data ));