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) {
self.postMessage(result.text);
} else {
throw result.formatted;
self.postMessage({ type: 'error', data: { message: result.formatted } });
}
});
};

View File

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