From 8c5244684c50ed974eaa6ffb80b980c5a075182f Mon Sep 17 00:00:00 2001 From: Amanda Ghassaei <amandaghassaei@gmail.com> Date: Mon, 12 Jan 2015 13:53:15 -0500 Subject: [PATCH] three js imported into web workers --- js/main.js | 2 +- js/persistentWorkers.js | 22 +++++++++++++--------- js/worker.js | 7 +++++-- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/js/main.js b/js/main.js index 60bbb019..a791d31a 100644 --- a/js/main.js +++ b/js/main.js @@ -7,6 +7,6 @@ $(function(){ three = Three(); setupNavBar(); - makeWorkers(4); + persistentWorkers(4); }); diff --git a/js/persistentWorkers.js b/js/persistentWorkers.js index 343b8d60..5a139710 100644 --- a/js/persistentWorkers.js +++ b/js/persistentWorkers.js @@ -1,26 +1,30 @@ //global workers so they do not have to be reinstantiated +function persistentWorkers(numWorkers){ -function browserSupportsWebWorkers() { - return typeof window.Worker === "function"; -} - -function makeWorkers(numWorkers){ + //check compatibility + if (!(typeof window.Worker === "function")){ + console.log("workers not supported"); + return nil; + } + //create array of workers var allWorkers = []; var URL = window.URL || window.webkitURL; var workerURL = makeBlobURL(URL, myWorker); for (var i=0;i<numWorkers;i++){ var worker = new Worker(workerURL); + var location = document.location; + worker.postMessage({url: location.toString()}); worker.postMessage([i,4]); - - worker.onmessage = function(e) { - console.log(e.data); - }; + worker.onmessage = workerCallback; allWorkers.push(worker); } URL.revokeObjectURL(workerURL); + function workerCallback(e){ + console.log(e.data); + } function makeBlobURL(URL, someFunction) { var blob = new Blob(["(" + someFunction.toString() + ")()"], { type: "text/javascript" }); diff --git a/js/worker.js b/js/worker.js index fb1d5599..ea476c9a 100644 --- a/js/worker.js +++ b/js/worker.js @@ -7,16 +7,19 @@ function myWorker(){ var data = e.data; if (data.url) { - var url = data.url.href; + var url = data.url; var index = url.indexOf('main.html');//url of landing page if (index != -1) { url = url.substring(0, index); } //load all scripts - // importScripts(url + 'dependencies/three.js'); + importScripts(url + 'dependencies/three.js'); // importScripts(url + 'js/element.js'); + return; } + + console.log(new THREE.Vector3(0,3,4)); var workerResult = 'Result: ' + (e.data[0] * e.data[1]); postMessage(workerResult); -- GitLab