fix(client): do not throw on SASS compile errors

This commit is contained in:
Valeriy S
2019-02-22 16:01:20 +03:00
committed by Stuart Taylor
parent 803836db66
commit 661a7705fd
2 changed files with 27 additions and 10 deletions

View File

@ -19,7 +19,7 @@ self.onmessage = e => {
if (result.status === 0) { if (result.status === 0) {
self.postMessage(result.text); self.postMessage(result.text);
} else { } else {
throw result.formatted; self.postMessage({ type: 'error', data: { message: result.formatted } });
} }
}); });
}; };

View File

@ -39,31 +39,48 @@ class WorkerExecutor {
// Handle timeout // Handle timeout
const timeoutId = setTimeout(() => { const timeoutId = setTimeout(() => {
this.killWorker(); this.killWorker();
reject('timeout'); done('timeout');
}, timeout); }, timeout);
const done = (err, data) => {
clearTimeout(timeoutId);
this.remove('error', handleError);
if (err) {
reject(err);
} else {
resolve(data);
}
};
const handleError = e => {
done(e.message);
};
this.on('error', handleError);
worker.postMessage(data); worker.postMessage(data);
// Handle result // Handle result
worker.onmessage = e => { worker.onmessage = e => {
if (e.data && e.data.type) { if (e.data && e.data.type) {
const observers = this.observers[e.data.type] || []; this.handleEvent(e.data.type, e.data.data);
for (const observer of observers) {
observer(e.data.data);
}
return; return;
} }
clearTimeout(timeoutId); done(null, e.data);
resolve(e.data);
}; };
worker.onerror = e => { worker.onerror = e => {
clearTimeout(timeoutId); this.handleEvent('error', { message: e.message });
reject(e.message);
}; };
}); });
} }
handleEvent(type, data) {
const observers = this.observers[type] || [];
for (const observer of observers) {
observer(data);
}
}
on(type, callback) { on(type, callback) {
const observers = this.observers[type] || []; const observers = this.observers[type] || [];
observers.push(callback); observers.push(callback);