Node的同步实现

对于一个异步的函数,为什么我们需要同步实现呢。
好比你需要统计平均分,班上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)

    原文作者:Tony_HQ
    原文地址: https://www.jianshu.com/p/579e7c81d43c
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞