splice slice sync and slice async

This commit is contained in:
casperlamboo 2016-08-19 15:12:20 +02:00 committed by Simon Voordouw
parent 12c18df053
commit a7c1a9b4fd
2 changed files with 23 additions and 25 deletions

View File

@ -11,6 +11,6 @@ const geometry = new THREE.TorusGeometry(20, 10, 30, 30);
const slicer = new SLICER.Slicer();
slicer.setGeometry(geometry);
slicer.slice(settings, true).then(gcode => {
slicer.slice(settings).then(gcode => {
document.getElementById('gcode').innerHTML = gcode.replace(/(?:\r\n|\r|\n)/g, '<br />');
});

View File

@ -30,34 +30,32 @@ export default class {
return this;
}
async slice(settings, async = false) {
let gcode;
sliceSync(settings) {
return slice(this.geometry, settings);
}
slice(settings) {
const sliceWorker = new SliceWorker();
if (async) {
const sliceWorker = new SliceWorker();
const geometry = this.geometry.toJSON();
const { config } = settings;
const geometry = this.geometry.toJSON();
const { config } = settings;
return new Promise((resolve, reject) => {
sliceWorker.onerror = reject;
gcode = await new Promise((resolve) => {
sliceWorker.addEventListener('message', (event) => {
const { message, data } = event.data;
switch (message) {
case 'SLICE': {
sliceWorker.terminate();
resolve(data.gcode);
}
sliceWorker.addEventListener('message', (event) => {
const { message, data } = event.data;
switch (message) {
case 'SLICE': {
sliceWorker.terminate();
resolve(data.gcode);
}
});
sliceWorker.postMessage({
message: 'SLICE',
data: { geometry, config }
});
}
});
} else {
gcode = slice(this.geometry, settings);
}
return gcode;
sliceWorker.postMessage({
message: 'SLICE',
data: { geometry, config }
});
});
}
}