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

61 wiersze
1.4 KiB
JavaScript
Czysty Zwykły widok Historia

2016-10-06 11:40:09 +00:00
importScripts('../vendor/three.min.js');
// Special version of ViziCities without controls (no DOM errors)
importScripts('../../dist/vizicities-worker.min.js');
const DEBUG = false;
2016-12-19 14:37:05 +00:00
if (DEBUG) { console.log('Worker started', Date.now()); }
2016-10-06 11:40:09 +00:00
// Send startup message to main thread
postMessage({
type: 'startup',
2016-12-19 14:37:05 +00:00
payload: Date.now()
2016-10-06 11:40:09 +00:00
});
// Recieve message from main thread
2016-12-21 11:47:51 +00:00
onmessage = function(event) {
2016-10-06 11:40:09 +00:00
if (!event.data.method) {
postMessage({
type: 'error',
payload: 'No method provided'
});
return;
}
2016-12-19 14:37:05 +00:00
var time = Date.now();
2016-10-06 11:40:09 +00:00
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
2016-12-21 11:47:51 +00:00
_method.apply(this, event.data.args).then(function(result) {
2016-12-19 14:37:05 +00:00
if (DEBUG) { console.log('Message sent from worker', Date.now()); }
2016-10-06 11:40:09 +00:00
// Return results
postMessage({
type: 'result',
payload: result.data
}, result.transferrables);
});
};