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

标签 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);
}

感谢您的建议!

最佳答案

你能做的就是始终跳过所有流, 但是您保留一个数组来存储是否必须运行或跳过此步骤。 例如:

如果你的管道是这样的 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
    }
}

通过这种方法,您拥有固定的管道,但您可以即时更改流量。

关于javascript - 使用运行时逻辑链接 Node.js 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36134447/

相关文章:

Node.js。如何将多个流(数组或链)传递到管道中?

javascript - FollowEntity影响2d中pick Ellipsoid的结果

javascript - 当返回字符串而不是 null 时,函数不会返回正确的值

Node JS中的JSON字符串化不序列化对象数组

node.js - Expressjs+socket.io+express-session

node.js - 管道到标准输出和可写流

node.js - Sequelize 查询执行循环

javascript - 实现客户端图像编辑器 - 最好的方法是什么?

javascript - 可拖动的 div 背景在 div1 上为一种颜色,在 div2 上为另一种颜色

javascript - getmetadata 用于 Azure Blob 存储 NodeJ 中选择的 Blob