Skip to content

Instantly share code, notes, and snippets.

@jbinkleyj
Forked from cecilemuller/main.ts
Created October 14, 2021 17:07
Show Gist options
  • Save jbinkleyj/4809a22a4034040622f0e6642521dc84 to your computer and use it in GitHub Desktop.
Save jbinkleyj/4809a22a4034040622f0e6642521dc84 to your computer and use it in GitHub Desktop.
Typescript Webworker
/* eslint-env browser */
import type {IRequestWorker} from "./worker.ts";
const worker = new Worker(new URL("./worker.ts", import.meta.url)) as IRequestWorker;
// Receive from the worker
worker.onmessage = ({data: {myresponse}}) => {
console.log(myresponse);
};
// Send to the worker
worker.postMessage({myrequest: 111});
export {};
/* eslint-env worker */
type TRequest = {
myrequest: number;
};
type TResponse = {
myresponse: number;
};
export interface IRequestWorker {
postMessage: (message: TRequest) => void;
onmessage: (message: MessageEvent<TResponse>) => void;
}
interface IResponseWorker {
postMessage: (message: TResponse) => void;
onmessage: (message: MessageEvent<TRequest>) => void;
}
const worker: IResponseWorker = self as any;
// Receive from the main thread
worker.onmessage = ({data: {myrequest}}) => {
console.log(myrequest);
// Send to the main thread
worker.postMessage({myresponse: 222});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment