次のようなWebワーカーを作成すると...
var w = new Worker("./Scripts/sample.js");
sample.jsは、呼び出し元からいくつかのパラメーターを取得したいです!!
可能?
次のようなWebワーカーを作成すると...
var w = new Worker("./Scripts/sample.js");
sample.jsは、呼び出し元からいくつかのパラメーターを取得したいです!!
可能?
私は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としてフォーマット可能である必要があるため(関数なしなど)、これは従来の引数の受け渡しとはまったく同じではありません。しかし、必要なことを実行できる可能性は十分にあります。
このように機能する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'];
ここで実際の例を見ることができます
送信するデータが大量にある場合は、クエリ文字列を使用しないでください。
location
WebWorkers(MDNによる)で利用可能location.hash
であり、、、、location.search
さらにlocation.pathname
は情報を渡す方法としても利用できます。(Chrome、Safari、FireFoxのMac OSXでテスト済み)
また、ハッシュとクエリの引数はChromeとFireFox forURL.createObjectURL(Blob([src]))
で機能しましたが、Safariでは機能しませんでした。
(ネクロポスティングについてお詫びします。検索結果は永遠です!)