https://github.com/paralleltask/dinotask
A lightweight web-workers library for building multithreaded applications in browser.
https://github.com/paralleltask/dinotask
Last synced: 5 months ago
JSON representation
A lightweight web-workers library for building multithreaded applications in browser.
- Host: GitHub
- URL: https://github.com/paralleltask/dinotask
- Owner: ParallelTask
- License: mit
- Created: 2018-12-11T18:28:31.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2018-12-11T19:06:41.000Z (about 7 years ago)
- Last Synced: 2024-10-13T01:12:57.119Z (over 1 year ago)
- Language: TypeScript
- Size: 9.77 KB
- Stars: 0
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# DinoTask
DinoTask is built on top of HTML5 web-workers which provides an easy way of creating tasks that execute parallel in browser without blocking the UI thread.
## Usage
* Following HTML snippet blocks the UI Thread
```
UI Freeze example
Normal
CPU Intensive - UI Freeze
document.getElementById("normal").addEventListener("click", function () {
console.log("Normal => I take less time to execute");
});
document.getElementById("uifreeze").addEventListener("click", function () {
console.log("UI Freeze => I start the loop and takes 5 to 10 seconds to execute.");
var startTime = new Date().getTime();
for (var j = 0; j < 1500; j++) {
for (var i = 0; i < 10000000; i++);
}
var endTime = new Date().getTime();
console.log("UI Freeze => Total time in seconds: " + ((endTime - startTime) / 1000));
});
```
With the above snippet, when you right click or left click your page or any button on the page, it will not respond since it is blocking UI thread.
* Following HTML snippet does not block the UI Thread
```
UI Freeze example
Normal
CPU Intensive - UI Freeze
document.getElementById("normal").addEventListener("click", function () {
console.log("Normal => I take less time to execute");
});
document.getElementById("uifreeze").addEventListener("click", function () {
console.log("UI Responsive => I will start the loop and takes 5 to 10 seconds to execute.");
DinoTask.create([], function () {
var startTime = new Date().getTime();
for (var j = 0; j < 1000; j++) {
for (var i = 0; i < 10000000; i++);
}
var endTime = new Date().getTime();
return "UI Responsive => Total time in seconds: " + ((endTime - startTime) / 1000);
}).run(function (result) {
console.log(result);
}).errorHandler(function (err) {
console.log(err);
});
});
```
With the above snippet, when you right click or left click your page or any button on the page, it will still respond since it is non-blocking UI thread. (It offloads the computation to other thread).
## Download
CDN LINK - https://cdn.jsdelivr.net/npm/dinotask@0.0.1/dinotask.js
or you can download the file from `/dist` folder of github repository.