An open API service indexing awesome lists of open source software.

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.

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.