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");
});
It creates a thread for every task so it not blocking main thread and it could run in parallel
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
Expample of making blocking job on main thread and on TPromise's thread
Simple resolve on timeout
Simple reject on timeout