使用运行时逻辑

时间:2016-03-21 14:57:16

标签: javascript node.js node.js-stream

过去6个月左右,我一直在使用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);
}

感谢您的建议!

1 个答案:

答案 0 :(得分:1)

你可以做的是总是通过所有溪流, 但是如果必须运行或跳过此步骤,则保留一个存储的数组。 例如:

如果您的烟斗是这样的 A - > B - > C - > D - > E - > F - > ħ

你有一个哈希

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

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

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

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

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