电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 2034 人浏览分享

nodejs async异步常用函数总结

[复制链接]
2034 0

这篇文章主要介绍了nodejs async异步常用函数总结的相关资料,需要的朋友可以参考下

nodejs框架类库很多,“流程控制”本来是件比较简单的事,但是对于nodejs的异步架构的实现方法,
对于需要同步的业务逻辑,实现起来比较麻烦。

async的集合控制:

  1. async.map(arr, function(item, callback){},callback(err, results){});async.mapSeries
复制代码


201711171115173.png

  1. app.get('/testMap',function(req, res){
  2.   var arr = [0,1,2,3,4,5,6];
  3.   async.mapSeries(arr,function(item, callback){
  4.    (function(){
  5.     callback(null, item+1);
  6.    }());
  7.   },function(err, results){
  8.    console.log(results);//[1,2,3,4,5,6,7];
  9.   });
  10. });
复制代码


results.length与arr.length值相等;

对数组arr中的每个item,执行某个异步函数function,得到结果。
所有的结果将汇总到最终的callback里;

async的流程控制:
async.series(tasks,callback);多个函数依次执行,之间没有数据交换

201711171115174.png

  1. app.get('/testSeries',function(req, res){
  2.   async.series([
  3.   function(callback){
  4.    callback(null,'function1');
  5.   },function(callback){
  6.    callback(null, 'function2')
  7.   },function(callback){
  8.    callback(null, 'function3');
  9.   }],function(err, results){
  10.    console.log(results);//['function1','function2','function3'];
  11.   });
  12. });
  13. tasks: functionList;
  14. callback: function(err, result){}
复制代码


串行执行,一个函数数组中的每个函数执行完成之后,才执行下一个函数,
callback(err,results);err返回错误信息,results为多个函数的返回的结果集;
如果任何一个函数向它的回调函数中传了一个error,则后面的函数都不会被执行,
并且将会立刻会将该error以及已经执行了的函数的结果,传给series中最后那个callback
async.parallel(tasks,callback);多个函数并行执行;

5.png

  1. app.get('/testParallel',function(req, res){
  2. async.parallel([
  3.   function(callback){
  4.    callback(null,'function1');
  5. },function(callback){
  6.    callback(null, 'function2')
  7.   },function(callback){
  8.    callback(null, 'function3');
  9. }],function(err, results){
  10.    console.log(results);//['function1','function2','function3'];
  11. });
  12. });
复制代码

tasks: functionList;
callback:function(err, results){}
tasks.length与results.length值相等

并行执行多个函数,每个函数都是立即执行,不需要等待其它函数先执行.
传给最终callback数组中的数据按照tasks中声明的顺序,而不是执行完成的顺序;


如果某个函数出错,则立刻将err和已经执行完的函数的结果值传给parallel最终的callback。
其它未执行完的函数的值不会传到最终数据,但要占个位置

async.whilst(test,function,callback);可用于异步调用while


  1. app.get('/testWhilst',function(req, res){
  2.   var count = 0;
  3.   async.whilst(function(){
  4.    if(count < 3) return true;
  5.   },function(callback){
  6.    (function(){
  7.     count++;
  8.     callback(null);
  9.    }());
  10.   },function(err){
  11.    console.log(count);//3
  12.   });
  13. });
复制代码


总结

以上所述是小编给大家介绍的nodejs async异步常用函数总结,希望对大家有所帮助。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.