Skip to content

Instantly share code, notes, and snippets.

@rjbultitude
Created August 8, 2017 18:02
Show Gist options
  • Save rjbultitude/1138fbbe93ef7d1f9982b451ea0bb08f to your computer and use it in GitHub Desktop.
Save rjbultitude/1138fbbe93ef7d1f9982b451ea0bb08f to your computer and use it in GitHub Desktop.
Web worker draw loop (for canvas animations)
// Main thread
var test = document.getElementById('test');
drawWorker = work(require('./draw-worker.js'));
drawWorker.addEventListener('message', function(e) {
if (e.data.msg === 'tick') {
sketchUpdateFn();
}
});
drawWorker.postMessage({draw: true, rate: appFrameRate});
drawWorker.onerror = function(e) {
console.log('Error with web worker on ' + 'Line #' + e.lineno +' - ' + e.message + ' in ' + e.filename);
alternativeDrawFn();
};
// Worker thread / draw-worker.js
module.exports = function (self) {
var interval;
self.addEventListener('message', function(e) {
if (e.data.draw) {
interval = setInterval(function() {
self.postMessage({msg: 'tick'});
}, 1000 / e.data.rate);
} else {
clearInterval(interval);
self.close();
}
}, false);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment