問題タブ [iterate]

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 に答える
527 参照

scala - Play フレームワークで Twitter ストリーミング接続を閉じる

以下のコード例では、Play 2.2 WS API を使用して Twitter ストリーミング API に接続しています。ストリームが確立されたら、ストリームから切断する方法を見つけようとして立ち往生しています。アプリケーションを停止するのではなく、それを行う適切な方法はありますか? どんな助けでも大歓迎です。

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

scala - ファイル書き込み iteratee が WS.get の EOF を受け取らない

このリンクで説明されているように、WS を使用してファイルをダウンロードするための単純な iteratee を作成しました。

次のスニペットを検討してください。

iteratee が Input.EOF を受け取っていないように見えるため、WS.get の後に .map(_.run) を呼び出しても、ここでは効果がないようです。チャンネルを閉じることができなくなります。これは私が得る出力です:

私は何を間違っていますか?

Play Framework 2.2.2 を使用しています。

前もって感謝します。

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

java - マージ ルールに基づいて、2 つの列挙子を 1 つにマージする方法

Playframework に小さな Scala プロジェクトがあります。私はすべてを反応的にやろうとしていますが、問題に遭遇しました。

日付順に並べられた DB の値を表す 2 つの Enumerator[A] インスタンスがあります。日付の順序を維持する単一の Enumerator[A] としてそれらを返す必要があります。Enumerator[A] でその解決策を見つけられなかったので、A を単一のコレクションに蓄積し、後で並べ替えています。

これに対処するための反応的な方法は何ですか?

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

scala - play iteratees を使用して無限列挙子を作成するにはどうすればよいですか

一連の要素を無限に繰り返す Enumerator を作成できることを望んでいましたが、方法がわかりません。再帰的な列挙子を作成すると、参照しようとするとスタックがオーバーフローするようです。たとえば、A、B、C、D、A、B、C、D、A、B、C、D、A を繰り返す列挙子を作成するには、次のようなものを使用したいと考えていました。

しかし、これを何らかの方法で使用しようとすると、スタックオーバーフローが発生します:

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

scala - Concurrent.unicast の引数を理解する

Play Framework 2.2 を使用しています

WebSocket 接続を実装するために、Concurrent.unicast自分のニーズに合った を使用します。

ただし、 のソース コードConcurrent.unicast、いくつかの引数の必要性を示しています。

anがonCompleteのときに が実行されることを理解しています。ただし、コールバックとのメソッドの 違いは何ですか:IterateeDone
onCompletemapIteratee

その上、ソースコードEnumerator#onDoneEnumeratingで提示されたの必要性は何ですか。 実際、以下を扱う WebSocket の実装に出くわしました。

と混同していonCompleteます。 誰でも違いを説明できますか? そして特に、なぜそうであるように議論を提示しないのですか。onDoneEnumeratingIteratee#map

Concurrent#broadcastonCompleteunicast

Iteratee世界に関する優れたドキュメントを見つけるのは難しい。

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

scala - エレガントな反復 -> Play の列挙子「転送」

Play でアプリを書きたかったのです。フレームワーク 2.2.x を非同期アプローチとplay.api.libs.iteratteeパッケージの演習として使用します。私がやりたかったのは、本文に大きなファイルのアップロードを含む POST 要求を取得し、それをチャンクごとに別の要求へのダウンロードとして送信することでした。

「Play for Scala」の本とこの例では、リクエスト内のファイルをチャンクで受け取り、Iterateecustom で定義したものに蓄積または反復できますBodyParserチャンクされた応答の提供に関しては、応答に提供する必要がありますEnumerator-同様Ok.chunked(enumerator)に、列挙子が新しいチャンクを提供するときにクライアントに提供されます。

すべてをまとめたいと思ったので、アップロードするクライアントからダウンロードするクライアントに新しいデータ チャンクを非同期的に伝達するためのエレガントでリアクティブな方法を見つけることができないようです。Iterateeによって受信されたデータ(この場合はBodyParser) を新しいEnumeratorもの (この場合は応答に出力を提供するもの)に「転送」する良い方法はないようです。

私はそれを行うための2つの方法を思いつきましたが、どちらも私には十分ではないようです:

  • を使用してとplay.api.libs.iteratee.Concurrent.boradcastを生成し、BodyParser 内で受信した各チャンクを にプッシュします。が持っているプロパティを持っていません - 列挙子は、適用されたものが古い値を消費するまで新しい値を生成しません。このようにすると、アップローダーがダウンローダーよりも高速なインターネット接続を持っていた場合、一度に 1 つのチャンクを処理するのではなく、ますます多くのメモリを使用する「膨張」が発生します。ChannelEnumeratorChannelChannelsEnumeratorIterateeChannel

  • プロキシ akkaActorを作成し、アップロードされたファイルをチャンクごとに送信し、最後のファイルがダウンローダによって消費された後にのみ次のファイルを送信します。ただし、この場合、各チャンクがダウンローダに送信されることの確認はActor、アップローダIterateeが別のチャンクをプロキシに送信するように、プロキシを経由する必要があります。これは私にとって不要なオーバーヘッドのようです。

私の質問は2つあると思います:

  1. Enumeratorによって受信された値を生成する「転送」を構築する簡単な方法はありIterateeますか?
  2. 私のユースケースでは、Play と Scala の非同期ツールキットを使用して、考えているシナリオを実装する正しい方法は何ですか?
0 投票する
1 に答える
53 参照

scala - 単純な Iteratee を作成すると、型エラーが発生しますか?

thisに基づいて REPL で Play2 を使用して単純な Iteratee を作成しようとしています。しかし、missing parametersエラーが発生します。しかし、型パラメーターを指定するeleと機能します。誰かがこれを説明できますか?