vizicities/examples/web-workers-basic/vizicities-worker.js

61 wiersze
1.4 KiB
JavaScript
Executable File

importScripts('../vendor/three.min.js');
// Special version of ViziCities without controls (no DOM errors)
importScripts('../../dist/vizicities-worker.min.js');
const DEBUG = false;
if (DEBUG) { console.log('Worker started', Date.now()); }
// Send startup message to main thread
postMessage({
type: 'startup',
payload: Date.now()
});
// Recieve message from main thread
onmessage = function(event) {
if (!event.data.method) {
postMessage({
type: 'error',
payload: 'No method provided'
});
return;
}
var time = Date.now();
if (DEBUG) { console.log('Message received from main thread', time, event.data); }
// if (DEBUG) console.log('Time to receive message', time - event.data);
// Run method
// if (!methods[event.data.method]) {
// postMessage({
// type: 'error',
// payload: 'Method not found'
// });
// return;
// }
var methods = event.data.method.split('.');
var _method = VIZI[methods[0]];
if (methods.length > 1) {
for (var i = 1; i < methods.length; i++) {
_method = _method[methods[i]];
}
}
// Call method with given arguments
_method.apply(this, event.data.args).then(function(result) {
if (DEBUG) { console.log('Message sent from worker', Date.now()); }
// Return results
postMessage({
type: 'result',
payload: result.data
}, result.transferrables);
});
};