thread.js
What is thread.js
threads is a lightweight thread api with es6 syntax.
and when you with the latest Chrome/Firefox/Edge, it use WebWorker to free boost your application with extra processor.
(safari do not support let/const syntax yet so it throw errors, but you can rewrite it to use var syntax--just a little work, if you want.)
How to use it
you could not to be confusion.
there is only one api: Thread.spawn
Thread.spawn receives only one parameter, an object like
{
data: data,
move: [tansferable],
fn: function (data) {},
}
and returns a Promise object.
Notice
which fn you give will be run in an Standalone environment, so you can not refer to your main context inside the fn.
with chrome/firefox
<script src="lib/Thread.js"></script>
Thread.spawn({
data: data,
fn: function(data) {
"use strict";
let result = data;
return result;
}
}).then(function(result) {
console.log(result);
});
with nodejs
var Thread = require("threads.js").Thread;
Thread.spawn({
data: data,
fn: function(data) {
"use strict";
let result = data;
return result;
}
}).then(function(result) {
console.log(result);
});
run example from node
$ node --harmony_destructuring example.js
get it faster with browser
use move option to transfer big data without copy-cost.
Transferable
"use strict";
let count = 10;
let startTime = Date.now();
for(let i = 0; i < count; i++) {
let data = new Uint8Array(10*1024*1024);
Thread.spawn({
data: data,
move: [data.buffer],
fn: function(data, move) {
"use strict";
for(let i in data) {
//do something
}
move(data.buffer);
let result = data;
return result;
}
}).then(function(result) {
console.log((Date.now() - startTime) + " ms");
}).catch(error => {
console.log(error);
});
}
What is next?
I will replace prototype to Class when Chrome/Firefox/Safari/Edge is ready.
and other es6(or es7?) syntax when at least 2 browser support it.
Issue
Anything will be receive, please tell me.
License
Licensed under the MIT License.