メインページにvarがあり、このvarを設定しようとしているワーカースレッドがある場合、ページにアクセスできる方法はありますか?すべてが同期していると仮定しますか?この場合javascript Webワーカー - データをページスレッドに渡す
var routeWorker = new Worker('getroute.js');
var checkPatrolRouteFoundTimer;
var rw_resultRoute;
var routeFound = false;
routeWorker.onmessage = function(e) {
rw_resultRoute = e.data.route;
routeFound = true;
}
function checkPatrolReady() {
if(!routeFound)
checkPatrolRouteFoundTimer = setTimeout("checkPatrolReady()", 1000);
}
function ForcePatrol(index) {
routeWorker.postMessage(index);
checkPatrolReady();
...
//do work on route
...
}
、私が話しているvarがrw_resultRouteある、と私はデバッグ時に、それが正しくセットされます見ることができます。しかし、唯一のことは、ワーカースレッドで設定されていることであり、ページスレッドでは設定されていないことです。
私は、予想通りにForcePatrol()メソッドを流れ、作業者が終了した後にrouteFoundがtrueに評価されるため、rw_resultRouteが設定されているように見えます。
技術的には、routeFoundはワーカーによって設定され、ページスレッドによって読み取られるためrw_resultRouteにはワーカーのみがアクセスできるので意味がありません。
これが可能であれば、alert()メッセージの表示やページのHTMLの更新以外のワーカースレッドの目的はありません。
OK、同意します。しかし、私はまだ、ページがナンバー・クランチングの結果にどのようにアクセスするのかという疑問があると思う。私の意見では、キャンバスのようにページHTMLに直接適用されない限り、そのデータはワーカースレッドに残っています。 – Stevus
「ページがどのようにリルにアクセスするか」私が言及したように、それはpostMessageとonMessageで行われます。ワーカーからのデータをクライアントに戻し、必要に応じてデータを使用します。 https://developer.mozilla.org/En/Using_web_workersでサンプルをご覧ください。 – epascarello