2016-03-21 6 views
0

でストリーム。すべて私がこれまでに遭遇してきた問題で、私は、標準テンプレート使用して解決することができました:チェーンNode.jsのは、過去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); 
} 

感謝を!あなたは何ができるか

+0

。あなたが代わりにその戻り値を格納した場合、あなたはそれの終わりに.pipeを置けばそれだけで同じ動作するように、第2のパイプは、最初のパイプの戻り値のオフに実行されるため。)(パイプので、パイプ()は動作します。 – Binvention

答えて

1

は、すべてのストリーム上を通過 しかし、あなたは、このステップを実行またはスキップする必要がある場合は保存配列を維持し、常にあります。例については :

あなたのパイプがこの Aのようなものである場合 - > B - > C - > D - > E - > F - > H

そして、あなたはハッシュ

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

を持っていますそれはあなたが現在のパイプがハッシュに

// step B 
pipe(function(data)){ 
    if(steps['B'] === 1){ 
     // do something 
    } 
} 
であるかどうかをチェックパイプから始めるだけのパイプBとD

オンを実行することを意味しこのアプローチで

は、あなたがパイプを固定している、しかし、あなたはその場で流れを変えることができます。そのため、パイプ機能を使用して、チェーンそれらそのようにできるはずです返す方法の

関連する問題