私はRequirejsとBackbonejsを使ってうまく動作するアプリケーションを作っていますが、時には実際には減速しています...たとえば、算術演算を行う場合などです!Requirejsを使用してWeb Workersをモジュールビルドに使用する方法は?
マイ・モジュール(traffic.js):
define(["jquery", "use!underscore", "use!backbone", "namespace" ],
function ($, _, Backbone, globals) {
.....
var worker = new Worker("arithmetic.js");
worker.addEventListener('message', function(e) {
console.log(e.data);
}, false);
worker.postMessage(globals.data); // Send data to our worker.
});
arithmetic.js:私はこのようなこの算術演算作業を行うために、Webワーカーを使用しようとした
define(["use!underscore", "use!backbone" ],
function ($, _) {
//Here die Operations
});
をしかし、私はエラーがある定義が定義されていない!
thisでも試しましたが成功しませんでした。
Web Workerをrequirejsまたはbackbonejsに挿入する方法
ありがとうございます!
Webワーカーをロードして開始することができますが、 'add()'が 'require(function {}) 'ブロック内で完了した場合、' postMessage() 'に応答しません。ワーカーのイベントリスナーは、さまざまなrequirejsモジュールを呼び出す必要があります。あなたが言及したAPIドキュメントの例、つまりhttps://github.com/jrburke/requirejs/blob/master/tests/workers.jsは、 'onmessage'リスナーを設定しません。何か案は? – Fuhrmanator
@Fuhrmanatorまた、onmessage'イベントハンドラを直接設定することもできます(ただし、addEventListenerは常にJavaScriptのninjasによって推奨されます)。 (http://www.html5rocks.com/jp/tutorials/workers/basics/)。 ** Webワーカー用のrequireJSプラグインを使用する場合は、onmessage構文**を使用してください。ネイティブワーカーが利用できない場合は、プラグインに含まれているpolyfill fake-worker.jsは機能しません。 –
@puro_nervio私はそれを最終的に動作させることができました。私が見つけた実例では、作業者が 'addEventListener()'を実行する前にメインスレッドに返信するために 'postMessage()'を実行していました。私の問題は、スレッドが準備ができていなかったということだと思っています。いくつかのモジュールのrequirejsには時間がかかるので、 'addEventListener'はメインスレッドが' postMessage() 'を実行して何かを開始する前に実行されませんでした。言い換えると、メインスレッドは最初にそれと同期しなければなりません。 – Fuhrmanator