問題タブ [web-worker]
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.
javascript - Webワーカー-彼らはどのように機能しますか?
私はこの例を理解しようとしています:
HTML(メインコード):
Javascript(ワーカーコード):
次の質問があります。
正確にワーカーコードが実行を開始するのはいつですか?
var worker = new Worker("fibonacci.js");
?の実行直後onmessage = function(event) { ... }
ワーカーコードでの割り当てがworker.postMessage("5");
メインコードで以前に実行されるというのは本当ですか?ワーカーコードは、メインコード(など
worker
)で定義されているグローバル変数にアクセスできますか?メインコードは、ワーカーコード(など
results
)で定義されているグローバル変数にアクセスできますか?メインコードでは、ワーカーコード(ワーカーのイベントハンドラー)
worker.onmessage = function(event) {...}
と同じ意味を持っているように見えます。私はどこが間違っていますか?それらの違いは何ですか?onmessage = function(event) {...}
onmessage
このコードは実際に何をすべきですか?ここで実行すると、「5」と出力されます。それはそれがすることになっていることですか、それとも私は何かが欠けていますか?
どうもありがとう !
javascript - HTML5 Webワーカーがロックアップして、親からのメッセージに正しく応答するのを防ぐ方法
私はWebワーカーを使用してCPUを集中的に使用していますが、ワーカーがまだ処理している間に、ワーカーが親スクリプトからのメッセージに応答する必要があります。
ただし、ワーカーは処理ループでロックされている間はメッセージに応答しません。また、メッセージキューをポーリングする方法が見つかりませんでした。したがって、唯一の解決策は、キュー内のすべてのメッセージを処理できるように、一定の間隔で処理を中断することであるように思われます。
明らかなオプションはタイマーを使用することです(たとえばsetIntervalを使用)が、起動間の最小遅延が非常に長いことを読みました(http://ajaxian.com/archives/settimeout-delay)。これは処理が遅くなるため残念です。多くの。
これについて他の人々はどう思いますか?onmessage
それぞれの最後にワーカーを自分自身にディスパッチさせてonmessage
、自分から受け取ったイベントごとに処理ループの1つのステップを効果的に実装しようとしますが、誰かがこれについて何かアイデアを持っているかどうかを確認したかっただけです。
ありがとう、
html - onmessageハンドラーを設定するときのWebワーカーとの競合状態?
次のコードと、このMozillaチュートリアル「Webワーカーの使用」の説明を考慮してください。
この例の1行目は、ワーカースレッドを作成して実行を開始します。 2行目では、ワーカーのonmessageハンドラーを、ワーカーが独自のpostMessage()関数を呼び出すときに呼び出される関数に設定しています。
スレッドは、 Workerコンストラクターが呼び出された瞬間に開始されます。onmessageハンドラーの設定に競合状態があるのではないかと思います。たとえば、onmessageが設定される前にWebワーカーがメッセージを投稿した場合です。
誰かがこれについてもっと知っていますか?
アップデート:
Andreyは、MozillaチュートリアルのFibonacciの例のように、Webワーカーがメッセージを受信したときに作業を開始する必要があると指摘しました。しかし、それはWebワーカーでonmessageハンドラーを設定する際の新しい競合状態を作成しませんか?
例えば:
メインスクリプト:
Webワーカースクリプト('worker.js')
次に、次の実行パスを検討します。
" var result = [] "行は省略できますが、それでも同じ効果があります。
これは有効な実行パスです。Webワーカーでタイムアウトを設定して試してみました。現時点では、競合状態に陥ることなくWebワーカーを使用する方法がわかりません。
jquery - Web ワーカーとスパークライン
Web ワーカーが DOM にアクセスできないことはわかっていますが、バックグラウンドでスパークライングラフをレンダリングしてそれを返す方法があるかどうか疑問に思っていました。そうでない場合、Web Workers を使用して約 100 万のスパークラインの処理を高速化する方法はありますか?
パフォーマンスを改善しようとしています (この質問を参照してください)
javascript - JavaScriptでCPUコアの数を取得しますか?
JavaScript で使用可能な CPU コアの数を判断して、それに応じて Web ワーカーの数を調整する方法はありますか?
javascript - ゲームに Web Workers を使用することは理にかなっていますか?
私は、AI ロジック、動きなどと描画を含むゲームに取り組んでいます。Web Workers を使用して移動と AI ロジックを計算することは理にかなっていますか? しかし、どうすればそれを行うことができますか? ワーカーは、衝突のための特定のオブジェクトの位置、弾丸の量など、メイン スレッドについて多くのことを知る必要があるためです。アクセスできません。postMessage() システムがあることは知っていますが、それはとても感じます...うーん、痛いですか?
たとえば、スプライト、位置、ヘルスなどを持つライフルマンを表すライフルマン オブジェクトがあります。彼にパトロールしてもらいたいと思います。では、ワーカーでパトロール コードを実行するにはどうすればよいでしょうか。そのオブジェクトへのほぼすべてのアクセスが必要になります。
javascript - Node.jsとCPUを集中的に使用するリクエスト
私はNode.jsHTTPサーバーをいじり始めて、サーバー側のJavascriptを書くのが本当に好きですが、何かが原因で、WebアプリケーションにNode.jsを使い始めることができません。
非同期I/Oの概念全体を理解していますが、画像操作や大きなデータセットの並べ替えなど、手続き型コードがCPUを非常に集中的に使用するエッジケースについては少し心配しています。
私が理解しているように、サーバーは、ユーザーのリストの表示やブログ投稿の表示などの単純なWebページ要求に対して非常に高速になります。ただし、グラフィックを生成したり、数千の画像のサイズを変更したりする非常にCPUを集中的に使用するコード(たとえば、管理バックエンド)を記述したい場合、要求は非常に遅くなります(数秒)。このコードは非同期ではないため、これらの数秒間にサーバーに着信するすべてのリクエストは、遅いリクエストが完了するまでブロックされます。
1つの提案は、CPUを集中的に使用するタスクにWebワーカーを使用することでした。ただし、Webワーカーは、別のJSファイルを含めることで機能するため、クリーンなコードを作成するのが難しくなるのではないかと心配しています。CPUを集中的に使用するコードがオブジェクトのメソッドにある場合はどうなりますか?CPUを集中的に使用するすべてのメソッドに対してJSファイルを作成するのはちょっと面倒です。
もう1つの提案は、子プロセスを生成することでしたが、それではコードの保守性がさらに低下します。
この(知覚された)障害を克服するための提案はありますか?CPUの重いタスクが非同期で実行されることを確認しながら、Node.jsを使用してクリーンなオブジェクト指向コードをどのように記述しますか?
php - Firefox の Web ワーカーからの非同期 POST リクエスト
拡張機能で使用されている Web ワーカーから POST メソッドで非同期リクエストを作成しようとしています。問題は、それが私にはうまくいかないということです。サーバー側では、$_POST 変数のデータをリッスンする PHP スクリプトがあります。サーバーへの接続を確立し、URL (GET) でデータを渡すこともできますが、$_POST は常に空です。
Web ワーカーで使用している最新のコードは次のとおりです。
(問題が同じオリジン ポリシーであると考えたときに、MDN Web サイトから借用)
これに先立って、私はかなり明白で途方もなく単純なものを使用していました:
この場合、リクエストもパスしましたが、$_POST はまだ空でした。
POST リクエストが Web ワーカーで許可されていない可能性はありますか?
現在、すべてが localhost でテストされています。
cross-domain - JSONP と Web ワーカーを使用した Cross-Origin Resource Sharing (CORS)
Web ワーカーで JSONP を使用して別のドメインとの間でデータを取得/送信する方法を探しています。
Web ワーカーは DOM にアクセスできないため<script>
、URL およびコールバック パラメータを含む<head>
タグを Web ワーカーからのタグに追加することはできません。
JSONP と Web Workers を使用して別のドメインとの間でデータを取得/投稿する方法を知っている人はいますか?
ありがとう、
html - Webワーカーのキャッシュを強制的にリロード/防止する
ほとんどのブラウザ(特にChrome)は、ページを強制的にリロードした後(SHIFT + F5など)でもWebワーカースクリプトをキャッシュしているように見えることに気付きました。キャッシュを強制的に更新するために私が見つけた唯一の信頼できる方法は、ワーカースクリプトのパスをアドレスバーに入力し、それを個別に強制的に再ロードすることです。
明らかに、これは何かを開発しようとするときの王室の苦痛です。ブラウザがワーカースクリプトをキャッシュしないようにするか、簡単な方法で強制的にリロードするための信頼できる方法を知っている人はいますか?