Node的同步实现

作者: Tony_HQ | 来源:发表于2016-10-15 23:34 被阅读107次

对于一个异步的函数,为什么我们需要同步实现呢。
好比你需要统计平均分,班上30个同学,每个人在一张小纸条写下各自分数,有人写的快,有人写得慢,你需要计算,就必须等待所有人都写好。
每个人写是异步的,但是你需要等待所有人都写好。
这是一种情况。
再比如,你需要打电话给C,可惜你只有B的电话,B有C的电话,这时候你打电话给B,B说等下发C的电话号码给你,这时候你必须得等B将C的号码发来,才能经行下一步。
这是第二种情况。

使用Async

第一种情况

var functionArray=[
  function(callback){
    callback(err,data);
  }
];
var done=function(err,data){
};
async.parallel(functionArray,done);
//async.each 等等

第二种

async.waterfall([
    function (callback) {
         callback(null, result);
    },
    processData
], done)

更多的看看官方文档即可。想到的都有。

使用Promise来实现(以bluebird为例)

第一种

var promiseCollections;
Promise.all(promiseCollections).then(function() {
  console.log("all done");
});

第二种

Promise.mapSeries(promiseCollections).then(function() { 
  console.log("all done");
})

顺带提一下, promise.map与promise.all区别在于,前者会将每个处理promise根据设置把多少个promise保存在内存里。
reduce用于归纳(累积)。
any/some/props,几个是满足了条件的(fulfilled)
race,竞争(ES6 only)

相关文章

  • Node的同步实现

    对于一个异步的函数,为什么我们需要同步实现呢。好比你需要统计平均分,班上30个同学,每个人在一张小纸条写下各自分数...

  • 第七章

    AbstractQueuedSynchronizer——AQS 抽象排队同步器 AQS实现: 1.使用Node实现...

  • node教程--回调函数

    node异步读取文件: node同步读取文件: 在 Node.js 中,异步式 I/O 是通过回调函数来实现的 f...

  • 利用cobbler实现系统自动化安装

    1、PAM和google模块实现ssh双因子安全验证。 2、使用chrony实现内网时间同步(一台node1从外网...

  • Node实现异步过程的状态同步

    说明 有时会遇到一个耗时异步过程(如转码、慢查询)可能被快速反复调用的情况。如果希望每次调用都能正确返回,而又不希...

  • JUC并发编程-5.AbstractQueuedSynchron

    1.AQS的底层数据结构 AQS.jpg 使用Node实现FIFO队列,可以用于构建锁或者其他同步装置的基础框架 ...

  • node 同步异步

    1. series(tasks,[callback]) 多个函数从上到下依次执行,相互之间没有数据交互 ...

  • browsersync:浏览器同步测试工具

    browsersync:浏览器同步测试工具 1.先安装node.js node.js官网:https://node...

  • [Node.js]node.js通过Async实现方法同步

    为什么会想去学习Async库和node.js的同步编程?在用node.js写接口/UI自动化用例的时候,在测试接口...

  • JS中同步心得

    不使用co模块 异步代码 2种方式 then 实现同步 async 实现同步 co模块实现同步(co+yield)...

网友评论

    本文标题:Node的同步实现

    本文链接:https://www.haomeiwen.com/subject/mzsoyttx.html