Skip to content

0 dependencies, helps you use worker more easily in NodeJS, just like an async function

License

Notifications You must be signed in to change notification settings

YuMao233/define-threads

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

define-threads

Zero dependencies, helps you use worker more easily in NodeJS, just like an async function.

Our implementation principle is very simple and clever, so you don't need to worry about introducing too many third-party libraries that would make your project bloated. If you want to understand how this library works, you can read the src/index.ts file.

Installation

npm install define-threads

Usage

TypeScript

// my-worker.ts

import { createThreadContext } from "define-threads";

// Create a thread context using the current file path
const defineThread = createThreadContext(__filename);

// Thread Function 1
export const calculateLargeSum = defineThread(async (maxNumber: number) => {
  let sum = 0;
  for (let i = 0; i < maxNumber; i++) {
    sum += i;
  }
  return sum;
});

// Thread Function 2
export const testFunction = defineThread(
  async (a: number, b: number, c: number) => {
    return a + b + c;
  }
);
// index.ts

import { calculateLargeSum, testFunction } from "./my-worker";

async function main() {
  // Use them like a simple async function
  // TS type hint is complete!
  const sum = await calculateLargeSum(100);
  console.log(sum); // Output: 4950

  // call Thread Function 2
  const responses = await testFunction(1, 2, 3);
  console.log(responses); // Output: 6
}

main();

JavaScript

// my-worker.mjs

import { createThreadContext } from "define-threads";
const defineThread = createThreadContext(new URL(import.meta.url));

export const calculateLargeSum = defineThread(async (maxNumber) => {
  let sum = 0;
  for (let i = 0; i < maxNumber; i++) {
    sum += i;
  }
  return sum;
});
// index.mjs

import { calculateLargeSum } from "./my-worker.mjs";

async function main() {
  const sum = await calculateLargeSum(100);
  console.log(sum); // Output: 4950
}

main();

Report bug

The code has been tested locally and no issues were found. If you encounter any bugs while using it, please create an issue.

License

MIT License

About

0 dependencies, helps you use worker more easily in NodeJS, just like an async function

Resources

License

Stars

Watchers

Forks