【问题标题】:RxJS and Master/Worker workflowRxJS 和 Master/Worker 工作流程
【发布时间】:2016-05-11 09:49:51
【问题描述】:

现在我使用集群库的程序如下所示:

if(cluster.isMaster) {
  // here goes Rx subscriptions and workflows for the Master
} else if (cluster.isWorker){
 // here goes Rx subscriptions and workflows for a Worker
}

它看起来有点难看,我需要复制一些 Master 和 Worker 通用的代码。有没有办法以更“反应性”的风格重写它?

【问题讨论】:

  • 您能否发布一个更完整的代码示例来说明您正在尝试做什么?

标签: javascript node.js rxjs reactive-programming node-cluster


【解决方案1】:

将逻辑分解为“任务”或可重复使用的转换是一种很好的做法。然后,您可以将它们组合在一起以创建更复杂的数据转换管道,针对不同情况进行定制。

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 ));

【讨论】:

    猜你喜欢
    • 2021-12-04
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多