1. @author mrbean
  2. 例子均来源于github parallel.js

  昨天写的第一篇今天一看居然有50+的阅读量了,感觉很激动啊,但是也有点害怕毕竟这只是自己笔记性质的一点东西,所以赶紧拿起来再看看。其实自己也没什么把握,所以希望大家看的话有什么不同的以及各种见解可以留个评论大家一起学习。

  今天主要是解释一下示例代码,个人觉得就粗浅的用法来说只要是能看懂这几个例子就差不多了

一、

  1. var p = new Parallel([1, 2, 3, 4, 5]);
  2.  
  3. console.log(p.data); // prints [1, 2, 3, 4, 5]

这段代码就十分简单了,就是首先构造了一个新的parallel job然后使用.data输出其中的数据。个人另外测试了一下用string可以输出,用json貌似只是输出object

二、

  1. var p = new Parallel('forwards');
  2.  
  3. // Spawn a remote job (we'll see more on how to use then later)
  4. p.spawn(function (data) {
  5. data = data.reverse();
  6.  
  7. console.log(data); // logs sdrawrof
  8.  
  9. return data;
  10. }).then(function (data) {
  11. console.log(data) // logs sdrawrof
  12. });

  这段代码功能很简单就是首先像上面一样进行了初始化,然后调用spanw函数产生一个新的线程,然后使用一个匿名函数将数据逆转,最后输出。但是这份代码在我的浏览器(chrome for windows)上不能运行,第5行报错,说是不存在那个函数。

  就然后就各种查,最后怀疑是可能他这个不支持这么用字符串(也可能是我的问题,希望有知道的或者自己运行成功的可以留言告诉我),于是加上一个split发现这样就可以了很是神奇。。。最后join一下就得到要的输出将结果了。

三、

  1. var p = new Parallel([0, 1, 2, 3, 4, 5, 6]),
  2. log = function () { console.log(arguments); };
  3.  
  4. // One gotcha: anonymous functions cannot be serialzed
  5. // If you want to do recursion, make sure the function
  6. // is named appropriately
  7. function fib(n) {
  8. return n < 2 ? 1 : fib(n - 1) + fib(n - 2);
  9. };
  10.  
  11. p.map(fib).then(log)
  12.  
  13. // Logs the first 7 Fibonnaci numbers, woot!

  代码很简单,就是一个初始化然后定义一个求斐波那契的函数,最后调用map函数,这样就可以对其中每个数据执行fib,最后输出修改过的数据(这个由于有递归过程用require的话应该会有一定的提速作用)

四、

  1. var p = new Parallel([0, 1, 2, 3, 4, 5, 6, 7, 8]);
  2.  
  3. function add(d) { return d[0] + d[1]; }
  4. function factorial(n) { return n < 2 ? 1 : n * factorial(n - 1); }
  5. function log() { console.log(arguments); }
  6.  
  7. p.require(factorial)
  8.  
  9. // Approximate e^10
  10. p.map(function (n) { return Math.pow(10, n); }).reduce(add).then(log);

  这段代码首先初始化,然后定义了一个add函数,这个函数是后面用来进行归纳(这个翻译貌似不太通。。。)结果的。然后一个求阶乘的函数,由于是递归的所以用了require进行优化。最后我们看执行的函数,首先调用map,这样存的数就成了【1,10,100,1000,10000,100000,1000000,10000000,100000000】,然后调用reduce函数传入参数add就可以把所有值相加得到最后结果111111111

五、

  1. var p = new Parallel([1, 2, 3]);
  2.  
  3. function dbl(n) { return n * 2; }
  4.  
  5. p.map(dbl).map(dbl).map(dbl).then(function (data) {
  6. console.log(data); // logs [8, 16, 24]
  7. });
  8.  
  9. // Approximate e^10
  10. p.map(function (n) { return Math.pow(10, n) / factorial(n); }).reduce(add).then(log);

不解释。。。成功输出一个,不成功输出后一个(不过这没定义失败函数)。

六、

  1. var p = new Parallel([1, 2, 3], { evalPath: 'https://raw.github.com/adambom/parallel.js/master/lib/eval.js' });
  2.  
  3. function cubeRoot(n) { return Math.pow(n, 1 / 3); }
  4.  
  5. // Require a function
  6. p.require(cubeRoot);
  7.  
  8. // Require a file
  9. p.require('blargh.js');
  10.  
  11. p.map(function (d) {
  12. return blargh(20 * cubeRoot(d));
  13. });

require可以接受字符串或者函数或者地址类型的参数,注意使用文件名要包含eval.js

require我的初步理解就是把一个东西放在所有线程都能看得到的地方,这个主要应该是饮用一些重要的重复利用率较高的文件。

Parallel.js初探续集的更多相关文章

  1. Parallel.js初探

    今天闲着看了一下Parallel.js.这个库暂时貌似还没有什么中文的介绍(可能暂时用的人都不多吧).所以就只能上github找它得源码和介绍看看了.貌似它的代码也不多,以后可以深入研究一下. 先简单 ...

  2. Node.js初探之GET方式传输

    Node.js初探之GET方式传输 例子:form用GET方法向后台传东西 html文件: <form action="http://localhost:8080/aaa" ...

  3. Node.js 初探

    概念 Node.js 是构建在Chrome javascript runtime之上的平台,能够很容易的构建快速的,可伸缩性的网络应用程序.Node.js使用事件驱动,非阻塞I/O 模式,这使它能够更 ...

  4. vue.js初探

    前言 入手2016最火前端框架之一vue.js.大概从网上找了些资料看了下vue.js,从网上的资料来看只能惊叹其发展速度太快,让我意外的是其作者是华人的前提下作品这么受欢迎. 网上的博客和教程各种组 ...

  5. Node.js系列之node.js初探

    官方介绍:Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable n ...

  6. [转]backbone.js 初探

    本文转自:http://weakfi.iteye.com/blog/1391990 什么是backbone backbone不是脊椎骨,而是帮助开发重量级的javascript应用的框架. 主要提供了 ...

  7. angular.js初探

    2015年7月27日 22:26:35 星期一 用在我论坛里的小栗子: 先列出来一级回帖, 点击帖子前边的"查看回复"按钮无刷新的去请求该帖子的所有回复 首先要引用js文件, 我这 ...

  8. Underscore.js 初探

    一. 简介   Underscore 这个单词的意思是“下划线”.   Underscore.js 是一个 JavaScript 工具库,提供了一整套的辅助方法供你使用.   Think that - ...

  9. Node.js初探之hello world

    昨天公司内部培训,主讲人王老板对Node.js评价很高,连用几个“变态”来形容,恰好今天周末,有时间来认识下Node.js,对一门新语言最好的认识,是让其输出“hello world”,今天我就利用N ...

随机推荐

  1. Extjs使用Ext.function.bind, 给句柄函数传参

    回调函数updateImage中的key参数,在外部调用时有程序员自己指定. 使用Ext.Function.bind(this.updateImage, this, 'imageUrl', true) ...

  2. Maven打包附加配置文件

    在build节点下增加resources. <build> <!-- 资源 --> <resources> <!-- 复制非class文件 --> &l ...

  3. 升级centos内核到最新版本

    root权限执行: rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/ ...

  4. 借助 SublimeLinter 编写高质量的 JavaScript & CSS 代码

    SublimeLinter 是前端编码利器——Sublime Text 的一款插件,用于高亮提示用户编写的代码中存在的不规范和错误的写法,支持 JavaScript.CSS.HTML.Java.PHP ...

  5. oracle/node-oracledb 数据库驱动 与 Meteor 驱动包!

    oracle/node-oracledb: https://github.com/oracle/node-oracledb   Oracle 官方维护. metstrike/meteor-oracle ...

  6. 常见计算机基础笔试题总结quickstart

    [本文链接] 1. 以下是一颗平衡二叉树,请画出插入键值3以后的这颗平衡二叉树. 分析:考察平衡二叉树的基本操作,插入3变成不平衡,需要节点5右旋一次,节点2左旋一次.. 2. 表达式X=A+(B*( ...

  7. Django~static files

    such as images, JavaScript, or CSS https://docs.djangoproject.com/en/1.9/howto/static-files/ django. ...

  8. 让ar执行queryall和queryrow方法返回数组

    让ar执行queryall和queryrow方法返回数组 <?phpnamespace common\components;use \CActiveRecord;use \Yii;use \CD ...

  9. October 2nd 2016 Week 41st Sunday

    The road to success is lined with many tempting parking spaces. 通往成功的路边充斥着许多诱人的休息区. Exhausted, I thi ...

  10. iphone删除自动更新的系统

    1.利用 etc/host 文件屏蔽 Apple 更新服务器用电脑 iTools 或者手机 iFile 打开 etc/host 文件,添加:127.0.0.1 mesu.apple.com到文件中.2 ...