問題タブ [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.

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

javascript - JSスクリプトがワーカーとして実行されているタイミングを特定する

直接実行できるスクリプト、またはブラウザーで使用可能な場合はWebワーカーとして実行できるスクリプトがあります。このスクリプトの一部は、ワーカーとして実行する場合にのみ実行したいと思います。だから私の質問は、スクリプトがこのように実行されていることをどのように識別できるかということです。

これを可能にする仕様には何も表示されません。明らかな何かが欠けていますか?

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

javascript - オブジェクトを定義するときに (JavaScript) Worker でこれを使用できないのはなぜですか?

Java (OOP) の世界から来た私は、クラス、継承、およびマルチスレッドに慣れています。JavaScript ドメインでのちょっとしたウォークアバウトとして、これらのパラダイムとパターンを適宜利用してみます。読む: 並列実行にはプロトタイプ (「クラス」/オブジェクト) と WebWorker を使用します。ただし、この1つのケースは機能しません...

ワーカーを開始する HTML サイト:

HTML によって呼び出されるワーカー (「worker.js」):

ワーカーによって呼び出されるハンドラー (「handler.js」):

JavaScript のプロトタイピングと「継承」は、このように機能することを意図していますか? これの代わりにプロトタイプ プロパティを常に使用する必要がありますか? 関数の代わりに this.myProperty にアクセスしたい場合はどうすればよいですか?

また、これをコンストラクターの Handler インスタンスにバインドする合理的な方法はありますか? 少なくとも、コードは長い Handler.prototype 参照で雑然としていません。

ありがとう!

0 投票する
0 に答える
1224 参照

javascript - Web ワーカーのプーリング

Web ワーカーをプールするための適切なパターン/ライブラリを知っている人はいますか?

次のようなことができるようになりたいです。

  • スレッドの最大数を設定します。
  • 初めてワーカーを要求すると、新しいワーカーが作成されます。
  • 次回は、まだ操作を完了していない限り、前のワーカーを返します。その場合、新しいワーカーを作成して返します。
  • 最大数に達すると、ワーカーのリクエストをキューに入れ始め、ワーカーが利用可能になったときにそれらを開始します。
  • これは現在、プールがすべて同じ .js ファイルを使用することを前提としています。

または、これに対するより良いアプローチはありますか?

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

javascript - Webワーカーを低優先度に設定する方法はありますか?

ユーザーが自分のWebサイトを閲覧しているときに、Webワーカーを使用してバックグラウンド機能を提供することを考えています(これがWebワーカーの目的ですよね?)。ただし、スクロールが遅くなったり、コントロールが応答しなくなったりして、ユーザーエクスペリエンスが損なわれるリスクを冒したくありません。ただし、WebワーカーはOSスレッドにマップされているため、これらのスレッドの優先度をある程度制御できると思います。私が知っているように、現在のAPIにはそのようなものはありません。これを達成する方法を知っていますか?ハックしても?

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

jquery - IOS 上の HTML5 および Web ワーカー

jQuery と HTML5 を使用して IOS アプリケーションの構築に取り組んでいます。最近私は、 HTML5 Web ワーカーが Javascript のマルチスレッド プログラミングを実行するための大きな柔軟性を提供することを知りました。これは非常に素晴らしいことです。

では、IOS は Web ワーカーをサポートしていますか? また、どのようにそれらを私の IOS アプリケーションに追加できますか?

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

javascript - Webworker を使用して JavaScript で大規模な検索を並列化したことのある人はいますか?

高度に並列化可能で、膨大なデータ セットで動作する JavaScript で検索関数を作成しています。データ セットは JS オブジェクトのツリーに格納され、検索を Web ワーカーに分割することで実装できます。

同様のことを行っている製品や研究を知っている人はいますか? 実装パスが行き過ぎた経験を読みたいのですが、グーグルはまったく役に立ちませんでした.

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

javascript - JavaScript:ネットワーク通信にキューを使用する

私は、クライアントがWebSocketを介してサーバーと通信できる必要があるプロジェクトに取り組んでいます。ユーザー入力に対する応答性が高いように開発したアプリケーション以降、低速接続でGUIが中断されないように、WebWorkerにネットワーク経由のすべての通信を行わせることにしました。これまでのところ問題なく動作します。

ここで、ネットワークが遅く、送信するメッセージの量が多い場合に必要となる最適化について考えました。これらのメッセージのほとんどは、他のクライアントのユーザーインターフェイスを同期するためだけのものであるため、必要に応じてそれらの一部を削除できます。しかし、そうするためには、混雑している状況を検出する可能性が必要です。

キューのアイデアを思いつきました。送信される各メッセージはキューにプッシュされ、WebWorkerはキューを永続的に繰り返し、そこで見つかったすべてのメッセージを送信する以外に何もしません。これにより、キューに特定の数の要素がある場合(つまり、メッセージの送信が遅すぎる場合)、後でワーカーの動作を変えることができます。アイデアは単純明快ですが、実装はそうではないようです。

ご覧のとおり、ワーカーはメッセージを受信するとすぐにWebSocketを作成します。次に、関数processMessageQueue()を実行します。これは、WebSocketを介してデータを送信することにより、キューを永続的に空にするループです。さて、私の問題は、メッセージをキューにプッシュする可能性がないように見えることです。これは、タイプ'SEND'のメッセージが到着したときに発生するはずですが、ワーカーがビジー状態でイベントを処理できない場合は発生しません。したがって、キューをループするか、メッセージをプッシュすることができますが、両方を行うことはできません。

私が必要としているのは、どういうわけかこのキューにデータをプッシュする方法です。それが簡単に不可能な場合は、メッセージが送信されるよりも早く到着するタイミングを見つける別の方法を誰かが考えられるかどうかを知りたいと思います。ヒントはありますか?

前もって感謝します!

0 投票する
3 に答える
4868 参照

javascript - Firefox では動作するが Chrome では動作しない imageData を扱う Web ワーカー

imageData を Web ワーカーに渡してから戻すコードを実行すると、Firefox は正常に動作しますが、Chrome で「Uncaught Error: DATA_CLONE_ERR: DOM Exception 25」が表示されます。

Google で検索すると、古いバージョンの Chrome が以前は機能していたことがわかりますか?

さらに確認したところ、画像データを送信する前にJSON.stringifyとJSON.parseを実行する必要があるように見えましたが、どこでも機能しなくなりました。FF 9 で動作するコードは次のとおりです。

image.js:

worker.js:

この画像データをアプリと Web ワーカーの間で送受信するには、どのような方法を使用すればよいですか?

ありがとう!

編集:

通常の配列にコピーすると、Chrome が動作し始めます...

そのため、chrome は CanvasPixelArray をワーカーに渡すことはできませんが、通常の配列を渡すことはできます。しかし、Firefoxはできます。

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

firefox - Firefoxを使用したWebWorkersとWebSocket

WebWorker内で機能するWebSocket接続を実装しようとしています。それは簡単なはずです。Chromeをbローワーとして使用する場合です。ただし、この実験はさらにプロダクションの一部になるはずなので、すべての優れたブラウザー、つまりFirefoxで動作する必要があります。

私の問題は、Firefoxで動作させることができないことです。最初、FirefoxはWebWorkerを作成できませんでした。これはバグであり、バージョン9で修正されています。しかし、Worker内でWebSocketを作成できないようになりました。

次のコード行を試しました。

これは失敗します:

まあ、これによるとそれは動作するはずです。しかし、WebWorker内でも、このコンテキスト外でも、そうではありません。私は古いものを試しました

これはWebWorkerの外部では機能しているように見えますが、WebWorker内では上記と同じエラーが発生します。

さて、何が問題なのですか?一部の古いバージョンではデフォルトで無効になっているWebSocketを知っていますが、バージョン9はChromeと同様の機能をサポートする必要があります(少なくとも、彼らの側ではそう言っています)。だから私は何か間違ったことをしていますか?

私はUbuntu11.10を使用していますが、他のブラウザーはまだテストしていません。

前もって感謝します!