2016-10-14 20 views
-2

グローバル変数オブジェクトがあり、そのワーカーに渡したいと思います。postMessage()を使用せずにデータをWebワーカーに渡す

どうやら私の最善の選択肢は、変数オブジェクトを文字列に変換し、ワーカーがそれを元に戻し、それを処理してから、文字列に変換してメインスレッドに戻すことです。

私はちょうどオブジェクトを強制的に強制することができます何らかの方法はありますか?このすべての変換や奇妙なトリックが何か奇妙なものをダウンロードするようなことなしに。

私はスレッドを作成するのにsetTimeout()を使うことができますが、それらのスレッドは同じコアで使用されていますが、ワーカーは別のコアを使用しています。

答えて

0

1.をご覧ください。プラグインjsonfnをご覧ください。あなたは文字列にFunctionDateRegexでオブジェクトを変換してバック定期的なJSON

var str = JSONfn.stringify(obj);

​​

に似たオブジェクトにこの文字列を変換することができ、このプラグインで は、実際の例やドキュメントを参照してくださいhttp://www.eslinstructor.net/jsonfn/


2.プラグインvkThreadを見てください。プラグインに関数を渡すだけで、Webワーカーのスキルを使わずにスレッド内でコードを実行することができます。

function foo(n, m) { 
    return n + m; 
} 

var param = { 
    fn: foo,  // <-- function to run in a thread; 
    args: [2, 3] // <-- function's arguments; 
}; 

vkthread.exec(param).then(
    function(data){ 
     console.log(data); // <-- prints 5; 
    } 
); 

スレッドを作成しませんhttp://www.eslinstructor.net/vkthread/


3.setTimeout()でのライブの例やドキュメントを参照してください。

+0

最初の解決策は機能しません。環状構造を変換する際にエラーが発生します。 –

+0

2番目の解決策でも私にエラーが表示されます: "Uncaught SecurityError: 'Worker'を作成できませんでした: 'blob:file:/// fc35db14-f7db-4579-8e45-8e18c2b7f132'のスクリプトは、 " –

+0

nvm、セキュリティ機能を無効にするためにchromeに" --args --disable-web-security "フラグを使用しています... –

関連する問題