如何在nodejs中将多个变换流合并为一个

时间:2014-11-10 10:34:45

标签: node.js stream

我有以下代码段

function func1(){
  return  makeReadbleStream1()
    .pipe(transformA)
    .pipe(transformB)
    .pipe(transformC)
    .pipe(X);
}

function func2(){
  return  makeReadbleStream2()
    .pipe(transformA)
    .pipe(transformB)
    .pipe(transformC)  
    .pipe(Y);
}

函数1和2共享通过变换A,B和C的通用逻辑。基于DRY的原理,我认为最好将逻辑提取到函数combinedTransformABC中。但是,在我看来,没有明显的方法来实现基于transformA,B和C的这个函数,这样我就可以重构代码,如下所示。

function func1(){
  return  makeReadbleStream1()
    .pipe(combinedTranformABC)
    .pipe(X);
}

function func2(){
  return  makeReadbleStream2()
    .pipe(combinedTranformABC)
    .pipe(Y);
}    

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

为什么不这样做:

function applyTransforms(stream){
    return stream.pipe(transformA)
        .pipe(transformB)
        .pipe(transformC);
}
function func1(){
    return applyTransforms(makeReadbleStream1()).pipe(X);
}
function func2(){
    return applyTransforms(makeReadbleStream2()).pipe(Y);
}