問題タブ [highland.js]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
290 参照

javascript - ハイランド経由でリモート JSON 配列からオブジェクトのストリームを作成する方法は?

http://foo.bar/overview次の方法で URLからJSON をフェッチします。

オブジェクトの配列を含む JSON 応答で生成されます。

現在、配列の各オブジェクトを含むハイランド ストリームをセットアップしようとしています。それでも、そもそもストリーム全体のアプローチの逆効果と思われるリクエストの応答全体からしか構築できないようです。

私の最初の単純な解決策は、次の方法でビルドすることでした。

掘り下げてみると、ハイランドがリクエストオブジェクト自体からのストリームの設定をサポートしていることにも気付きました。

メモリに保存されている応答全体を使用せずに、オンザフライでリモート JSON からオブジェクトの配列のストリームを作成するにはどうすればよいですか?

0 投票する
2 に答える
603 参照

javascript - oboeを使用してオブジェクトの配列を反復する方法は?

次の形式のjson応答があります。

oboe.js を使用して、ハイランド ストリームを作成します。

私の問題は、その配列の各要素と一致するようにノードを使用するパターンがわからないことです。現在、現在のセットアップで取得しているアイテムは、すべてのオブジェクトとプロパティです。

応答に次のようなプロパティがあったとします。

使用できたはず.overview.*です。

0 投票する
2 に答える
1534 参照

javascript - ストリーム内でプロミスを解決するにはどうすればよいですか?

各要素が get リクエストの約束であるハイランド ストリームがあります。

もちろん、私が実行すると:

私は見るだけです:

それでも、パイプラインを作成して、promise の実際の結果に取り組みたいと思っています。then( orは使いたくないawait)。ストリーム パイプラインを介してこれらの約束を解決したいと考えています。

解決されたプロミスのみを新しいストリームにマップするハイランド ストリームを作成する方法があるはずだと思うので、プロミスのストリームを実際の値のストリームにフラット化できると期待しています。

掘り下げて、探していることを行うか、flatMapまたはflatten行うべきだと思いますが、どのように進めるかについての手がかりがなく、試行錯誤のすべてが失敗しました。

私は試した:

ストリーム内でプロミスを解決するにはどうすればよいですか?

0 投票する
2 に答える
628 参照

javascript - highland.jsを使用してストリームをフォークする方法は?

私はオブジェクトでsourceStream構成されています。BaseData

このストリームをn-amount の異なるストリームにフォークし、各BaseDataオブジェクトを好みに合わせてフィルタリングおよび変換したいと考えています。

最終的にnは、特定のタイプのみを含むストリームが必要であり、将来データが削除または追加される可能性があるため、フォークされたストリームの長さはさまざまです。

私はこれを次の方法で設定できると思いましたfork

foo2 つのストリームがあり、 -stream には 2 つの要素が含まれていると予想しました。

bar-stream には 1 つの要素が含まれます。

それでも、代わりにエラーが発生します。

ストリームを複数のストリームにフォークする方法は?


また、呼び出しをチェーンしようとしましたが、1 つのストリームの結果しか返されません。

印刷のみ:

期待される代わりに:


私が誤解していたのも、すべてだったのかもしれませんforkそのドキュメントエントリに従って:

Stream.fork() ストリームをフォークして、バックプレッシャーを共有するコンシューマーを追加できるようにします。複数のコンシューマーにフォークされたストリームは、最も遅いコンシューマーが処理できる速度でのみソースから値を取得します。

注: フォーク間の一貫した実行順序に依存しないでください。この変換は、すべてのフォークが値 foo を処理してから、いずれかが 2 番目の値 bar を処理することを保証するだけです。フォークが foo を処理する順序は保証されません。

ヒント: フォーク内でストリーム値を変更する (またはそうするライブラリを使用する) 場合は注意してください。すべてのフォークに同じ値が渡されるため、1 つのフォークで行われた変更は、その後に実行されるすべてのフォークで表示されます。これに矛盾した実行順序が加わると、微妙なデータ破損のバグが発生する可能性があります。値を変更する必要がある場合は、コピーを作成し、代わりにコピーを変更する必要があります。

非推奨の警告: 現在、ストリームを消費した後に (たとえば、変換を介して) ストリームをフォークすることが可能です。これは、次のメジャー リリースでは不可能になります。ストリームを fork する場合は、常に fork を呼び出してください。

「ストリームをフォークする方法」の代わりに 私の実際の質問は次のとおりです。ハイランドストリームをその場で別のストリームに複製する方法は?