8

次のようなWebワーカーを作成すると...

 var w = new Worker("./Scripts/sample.js");

sample.jsは、呼び出し元からいくつかのパラメーターを取得したいです!!
可能?

4

3 に答える 3

14

私はWebワーカーを大量に使用したことはありませんが、この説明によれば、次のように使用できると思います。

var worker = new Worker("sample.js");
worker.postMessage({ "args": [ ] });

次に、sample.jsで、次の行に沿って構造化します。

self.addEventListener("message", function(e) {
  var args = e.data.args;
  // do whatever you need with the arguments
}, false);

postMessageに入力されるものはすべて、JSONとしてフォーマット可能である必要があるため(関数なしなど)、これは従来の引数の受け渡しとはまったく同じではありません。しかし、必要なことを実行できる可能性は十分にあります。

于 2012-09-12T05:59:36.323 に答える
7

質問

このように機能するWebとして使用する場合、パラメーターsample.jsを渡すにはどうすればよいvar w = new Worker("./Scripts/sample.js");ですか?

答え

クエリ文字列で引数を渡すことができ、sample.jsでから引数を取得できます location.search。これを行うためにpostMessageを呼び出す必要はありません。

サンプルコード

発信コードは

var w = new Worker("./Scripts/sample.js?answer=42&question=ultimate");

これにより、ワーカーが呼び出されます。sample.jsでは。location.searchに等しくなり?answer=42&question=ultimateます。次のコードを使用して、適切に引き出すことができます

var parameters = {}
location.search.slice(1).split("&").forEach( function(key_value) { var kv = key_value.split("="); parameters[kv[0]] = kv[1]; })

var question = parameters['question'];
var answer = parameters['answer'];

実例

ここで実際の例を見ることができます

最終的な考え

送信するデータが大量にある場合は、クエリ文字列を使用しないでください。

于 2019-04-14T22:14:28.770 に答える
2

2018年-7月

locationWebWorkers(MDNによる)で利用可能location.hashであり、、、、location.searchさらにlocation.pathnameは情報を渡す方法としても利用できます。(Chrome、Safari、FireFoxのMac OSXでテスト済み)

また、ハッシュとクエリの引数はChromeとFireFox forURL.createObjectURL(Blob([src]))で機能しましたが、Safariでは機能しませんでした。

(ネクロポスティングについてお詫びします。検索結果は永遠です!)

于 2018-07-13T00:04:25.473 に答える