Giter VIP home page Giter VIP logo

threads.js's Introduction

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.

threads.js's People

Contributors

gpgkd906 avatar

Stargazers

 avatar Rémi Becheras avatar

Watchers

James Cloos avatar  avatar

Forkers

marke-apexit

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.