10

Workers JSNI at GWT svn WebWorkers はまだ完全には実装されていないようです。エレメンタルが開発の初期段階にあることは知っていますが、誰かがすでにそれを機能させようとしている可能性がありますか?

4

1 に答える 1

16

Web ワーカーの問題は、標準の GWT/Java モデルに実際には適合しないことです。私の意見では、標準の JS モデルにはほとんど適合しません。

Web ワーカーは、本質的に異なる JavaScript VM 間でデータをやり取りすることで機能します。そのデータは文字列の形式である必要があり、各ワーカーは JS を個別にロードする必要があります。これは、1 つのワーカー (またはメイン ページ) で宣言された変数は、文字列データの一部として渡され、ワー​​カー間でプッシュされない限り、別のワーカーからアクセスできないことを意味します。

では、GWT/Java を考慮すると、これはどのように機能するのでしょうか? Java の観点からは、これは複数のスレッドではなく、複数の JVM と同等です。異なるプロセスは、文字列 (または、さらに重要なのは、Java オブジェクトではない) をやり取りすることによってのみ通信でき、他の状態を共有することはできません。静的変数でさえ、2 つの仮想マシン間で異なる場合があります。

投稿したリンクから、JsWorker のソースを確認してください。開始する JS スクリプトの URL を使用して、 JsWindow.newWorkerを介してこのインスタンスを作成できます。JsWorkerは、応答をリッスンし、メッセージを送信するメソッドをサポートしています。仕事をさせてください。

そのスクリプトは GWT でコンパイルされたオブジェクトである可能性がありますが、元のアプリとは別のモジュールおよびエントリポイントになるため、適切に実行できるコードのみが含まれ、ページの読み込み時に描画を開始しようとしません。おそらく、JS のみをロードするリンカを使用する必要があり、「ページ」に iframe を想定しないでしょう。

GWT-NSプロジェクトには、いくつかの Web ワーカー サンプルが既にあります。これらは、独自のリンカーを使用してビルドされ、ワー​​カーにロードするためにロードする js ファイルを構築し、その他の便利な部分もいくつか持っています。

于 2012-07-07T15:02:18.650 に答える