JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 26
  • Score
    100M100P100Q49157F
  • License MIT

Promises running in separated threads

Package Exports

  • thread-promises
  • thread-promises/lib/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (thread-promises) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

ThreadPromises

Promises running in separated threads

new TPromise((resolve) => {
  resolve("I am multithread JavaScript");
});

npm version npm type definitions GitHub top language

It creates a thread for every task so it not blocking main thread and it could run in parallel

screenshot

Usage

Simple

new TPromise((resolve, reject) => {
  console.log("I am multithread JavaScript");
});

In async function

const hugeAsyncOperation = () => {
  return new Promise((resolve) => {
    const time = new Date().getTime();
    while (new Date().getTime() - time < 10000) {}
    resolve();
  });
};

const hugeMultithreadOperation = () => {
  return new TPromise((resolve) => {
    const time = new Date().getTime();
    while (new Date().getTime() - time < 10000) {}
    resolve();
  });
};

(async () => {
  console.log("Start async");
  // We'll be blocked here. Page will not respond for 10 seconds
  await hugeAsyncOperation();
  console.log("Async done");

  console.log("Start multithread");
  // We'll not be blocked here. Page will act like nothing happens and continue here in 10 seconds
  await hugeMultithreadOperation();
  console.log("Multithread done");
})();

For additional properties put them after executor function (like in setTimeout):

new TPromise(
  (resolve, reject, some, additional, properties) => {
    console.log(
      "I have no access to my old lexical environment, but I can use props"
    );
    console.log(some, additional, properties);
  },
  some,
  additional,
  properties
);

Installing

<script src="/lib/thread-promises.min.js"></script>

Or

<script src="https://cdn.jsdelivr.net/npm/thread-promises/lib/thread-promises.min.js"></script>

Or

npm i --save thread-promises
import TPromise from "thread-promises";

Examples

th-sort is a simple non-blocking sorting library

All examples

Expample of making blocking job on main thread and on TPromise's thread

demo and code

Simple resolve on timeout

demo and code

Simple reject on timeout

demo and code