threads
Version:
Web workers & worker threads as simple as a function call
25 lines (24 loc) • 909 B
JavaScript
/// <reference lib="dom" />
// tslint:disable no-shadowed-variable
const isWorkerRuntime = function isWorkerRuntime() {
const isWindowContext = typeof self !== "undefined" && typeof Window !== "undefined" && self instanceof Window;
return typeof self !== "undefined" && self.postMessage && !isWindowContext ? true : false;
};
const postMessageToMaster = function postMessageToMaster(data, transferList) {
self.postMessage(data, transferList);
};
const subscribeToMasterMessages = function subscribeToMasterMessages(onMessage) {
const messageHandler = (messageEvent) => {
onMessage(messageEvent.data);
};
const unsubscribe = () => {
self.removeEventListener("message", messageHandler);
};
self.addEventListener("message", messageHandler);
return unsubscribe;
};
export default {
isWorkerRuntime,
postMessageToMaster,
subscribeToMasterMessages
};