繁体   English   中英

使用运行时逻辑链接Node.js流

[英]Chaining Node.js streams with run-time logic

在过去大约六个月的时间里,我一直在使用Node.js流,到目前为止,我一直对它们感到非常满意。 到目前为止,我所遇到的所有问题都可以使用以下标准模板解决:

A.pipe(B).pipe(C);

但是,我当前的问题需要根据运行时逻辑链接不同的流“管道”。 例如,我想做的事情如下:

var basePipeline = A.pipe(B).pipe(C);
if(flowRate > 0.0) {
    basePipeline.pipe(D).pipe(E).pipe(F);
} else {
    basePipeline.pipe(G).pipe(H).pipe(I);
}

以上可能吗? 或者,我是否需要以完整的方式分别创建两个流:

if(flowRate > 0.0) {
    A.pipe(B).pipe(C).pipe(D).pipe(E).pipe(F);
} else {
    A.pipe(B).pipe(C).pipe(G).pipe(H).pipe(I);
}

谢谢你的建议!

您可以做的就是始终遍历所有流,但是如果必须运行或跳过此步骤,则可以保留一个数组来存储。 例如:

如果您的管道是这样的-A-> B-> C-> D-> E-> F-> H

而且你有一个哈希

A:0
B:1
C:0
D:1
...
...

这意味着您将只运行管道B和D。

在管道开始时,您检查当前管道是否在哈希中

// step B
pipe(function(data)){
    if(steps['B'] === 1){
       // do something
    }
}

使用这种方法,您可以固定管道,但可以随时更改流量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM