gpt4 book ai didi

javascript - RxJS 和 Master/Worker 工作流程

转载 作者:行者123 更新时间:2023-12-03 07:47:14 25 4
gpt4 key购买 nike

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

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 来说都很常见的代码。有没有办法以更“响应式(Reactive)”的方式重写它?

最佳答案

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

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

关于javascript - RxJS 和 Master/Worker 工作流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35156036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com