Parallel.js初探
今天闲着看了一下Parallel.js。这个库暂时貌似还没有什么中文的介绍(可能暂时用的人都不多吧)。所以就只能上github找它得源码和介绍看看了。貌似它的代码也不多,以后可以深入研究一下。
先简单翻译一下介绍吧:
构造函数
Parallel(data, opts)
这个data是一个你希望操作的数组,数据会保存在内存中直到完成工作,你也可以通过.data访问。你可以对数据进行一系列的操作。不过你的值都必须要序列化成JSON
opts是可选的参数:
evalPath指定指向eval.js的路径,具体什么用暂时还没有看懂,各位有知道的可以告诉我。
maxWorkers指定最大线程数,默认值是4。
synchronous定义当webworks不支持时的操作。
官方的例子:
var p = new Parallel([1, 2, 3, 4, 5]); console.log(p.data); // prints [1, 2, 3, 4, 5]
其它函数:
spawn(fn)
这个函数是用来将产生一个新的线程。
fn是一个执行在线程中的函数,这个函数可以获得现在的data并返回修正值。
官方例子:
var p = new Parallel('forwards');
// Spawn a remote job (we'll see more on how to use then later)
p.spawn(function (data) {
data = data.reverse();
console.log(data); // logs sdrawrof
return data;
}).then(function (data) {
console.log(data) // logs sdrawrof
});
map(fn)
这个函数用来对所有的数据都创建一个线程(应该不会超过最大规定线程数)
官方例子:
var p = new Parallel([0, 1, 2, 3, 4, 5, 6]),
log = function () { console.log(arguments); }; // One gotcha: anonymous functions cannot be serialzed
// If you want to do recursion, make sure the function
// is named appropriately
function fib(n) {
return n < 2 ? 1 : fib(n - 1) + fib(n - 2);
}; p.map(fib).then(log) // Logs the first 7 Fibonnaci numbers, woot!
reduce(fn)
官方例子:
var p = new Parallel([0, 1, 2, 3, 4, 5, 6, 7, 8]);
function add(d) { return d[0] + d[1]; }
function factorial(n) { return n < 2 ? 1 : n * factorial(n - 1); }
function log() { console.log(arguments); }
p.require(factorial)
// Approximate e^10
p.map(function (n) { return Math.pow(10, n); }).reduce(add).then(log);
then(success, fail)
这个函数很简单,就是制定了线程执行完成以后的操作。顾名思义success就是成功时的操作,fail是失败时的操作(fail可以不提供)
官方例子:
var p = new Parallel([1, 2, 3]);
function dbl(n) { return n * 2; }
p.map(dbl).map(dbl).map(dbl).then(function (data) {
console.log(data); // logs [8, 16, 24]
});
// Approximate e^10
p.map(function (n) { return Math.pow(10, n) / factorial(n); }).reduce(add).then(log);
require(state)
如果你有什么需要在主线程和工作线程之间分享的可以使用这个,state可以是字符串也可以是文件名。在使用这个函数的时候要注意构造函数中的可选参数evalPath一定要写上
官方例子:
var p = new Parallel([1, 2, 3], { evalPath: 'https://raw.github.com/adambom/parallel.js/master/lib/eval.js' });
function cubeRoot(n) { return Math.pow(n, 1 / 3); }
// Require a function
p.require(cubeRoot);
// Require a file
p.require('blargh.js');
p.map(function (d) {
return blargh(20 * cubeRoot(d));
});
Parallel.js初探的更多相关文章
- Parallel.js初探续集
@author mrbean 例子均来源于github parallel.js 昨天写的第一篇今天一看居然有50+的阅读量了,感觉很激动啊,但是也有点害怕毕竟这只是自己笔记性质的一点东西,所以赶紧拿起 ...
- Node.js初探之GET方式传输
Node.js初探之GET方式传输 例子:form用GET方法向后台传东西 html文件: <form action="http://localhost:8080/aaa" ...
- Node.js 初探
概念 Node.js 是构建在Chrome javascript runtime之上的平台,能够很容易的构建快速的,可伸缩性的网络应用程序.Node.js使用事件驱动,非阻塞I/O 模式,这使它能够更 ...
- vue.js初探
前言 入手2016最火前端框架之一vue.js.大概从网上找了些资料看了下vue.js,从网上的资料来看只能惊叹其发展速度太快,让我意外的是其作者是华人的前提下作品这么受欢迎. 网上的博客和教程各种组 ...
- Node.js系列之node.js初探
官方介绍:Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable n ...
- [转]backbone.js 初探
本文转自:http://weakfi.iteye.com/blog/1391990 什么是backbone backbone不是脊椎骨,而是帮助开发重量级的javascript应用的框架. 主要提供了 ...
- angular.js初探
2015年7月27日 22:26:35 星期一 用在我论坛里的小栗子: 先列出来一级回帖, 点击帖子前边的"查看回复"按钮无刷新的去请求该帖子的所有回复 首先要引用js文件, 我这 ...
- Underscore.js 初探
一. 简介 Underscore 这个单词的意思是“下划线”. Underscore.js 是一个 JavaScript 工具库,提供了一整套的辅助方法供你使用. Think that - ...
- Node.js初探之hello world
昨天公司内部培训,主讲人王老板对Node.js评价很高,连用几个“变态”来形容,恰好今天周末,有时间来认识下Node.js,对一门新语言最好的认识,是让其输出“hello world”,今天我就利用N ...
随机推荐
- iOS关于UILabel 基本属性 背景图片 背景色
[代码] iOS关于UILabel 基本属性 背景图片 背景色 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...
- 【GoLang】golang runtime 调度原理
参考资料: http://m.yl1001.com/group_article/3231471449287668.htm http://tieba.baidu.com/p/3542454435?sha ...
- C# 条件编译备忘
第一步:配置管理器中新建解决方案配置 第二步:定义条件编译符号: 第三步:在代码中使用自定义的条件编译 #if CustomDebug Console.WriteLine("dsads&qu ...
- 从其它系统登录到SharePoint 2010系统的单点登录
以前做的只是使用SharePoint的单一登录,用SharePoint去登录其他的系统,现在要反过来,用Form认证的系统来登录SharePoint. 我们都知道,SharePoint使用的是域认证系 ...
- delphi 快捷键
1. 编辑器 按键时候请注意输入法: 英文状态 Code Folding (Fold ---Methods) [Ctrl + Shift] + K + M
- ACM/ICPC 之 网络流入门-Ford Fulkerson与SAP算法(POJ1149-POJ1273)
第一题:按顾客访问猪圈的顺序依次构图(顾客为结点),汇点->第一个顾客->第二个顾客->...->汇点 //第一道网络流 //Ford-Fulkerson //Time:47M ...
- Java for LeetCode 207 Course Schedule【Medium】
There are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may have prer ...
- 跟着 8 张思维导图学习 Javascript
学习的道路就是要不断的总结归纳,好记性不如烂笔头,so,下面将po出8张javascript相关的思维导图. 思维导图小tips:思维导图又叫心智图,是表达发射性思维的有效的图形思维工具 ,它简单却又 ...
- Python 开发轻量级爬虫03
Python 开发轻量级爬虫 (imooc总结03--简单的爬虫架构) 现在来看一下一个简单的爬虫架构. 要实现一个简单的爬虫,有哪些方面需要考虑呢? 首先需要一个爬虫调度端,来启动爬虫.停止爬虫.监 ...
- Match:Power Strings(POJ 2406)
字符串前缀的阶 题目大意:求前缀的阶 和POJ1961是一样的,KMP的Next数组的应用,不要用STL,不要一个一个读入字符(IO永远是最慢的) #include <iostream> ...