observable-webworkers
Version:
A way to eavesdrop on Web Worker messages
32 lines • 902 B
JavaScript
const events = {};
const observable = (worker) => {
worker.addEventListener('message', (event) => {
observable.dispatchEvent('message', worker, event);
});
if (worker.port != null) {
worker.port.addEventListener('message', (event) => {
observable.dispatchEvent('message', worker, event);
});
}
};
observable.addEventListener = (type, fn) => {
if (events[type] == null) {
events[type] = [];
}
events[type].push(fn);
};
observable.removeEventListener = (type, fn) => {
if (events[type] == null) {
return;
}
events[type] = events[type]
.filter(listener => listener === fn);
};
observable.dispatchEvent = function (type, worker, event) {
if (events[type] == null) {
return;
}
events[type].forEach(fn => fn(worker, event));
};
export default observable;
//# sourceMappingURL=index.js.map