首页 » NodeJS » 正文

使用async库实现Node.js异步流程控制

背景

在实际工作中使用到Node.js最令人头疼的就是非常丑陋的回调嵌套和由此带来的排查问题的复杂化。

这里就需要借助Node.js的异步流程控制来让异步流程实现同步化编码,主流有async库,co库,es7新支持的async,await方法。

这里我介绍下我比较用的比较多的async库,async库具备对Node版本兼容好,无性能损耗,语法简单的特点。

async库主要分为对集合和对控制流两大类方法集。对于集合可以简单理解成对数组遍历,并对每个数组元素进行或串行或并行的相同函数处理。而控制流和集合最大的不同就是对非数组类数据进行流程化也就是多个不同函数的处理。

实战

在这里我们挑选集合方法中map类的方法来作为示例,对于串行、并行和限制并行数量的各情景都会覆盖到,其他方法请根据官方文档(见参考链接)以此类推

注意

  1. 使用map并行执行时候,迭代函数不能保证按迭代顺序完成,但是结果数组与原数组将保持相同的顺序。
  2. 使用map并行执行时如果中途遇到错误立刻将错误、以及已经执行完成的结果汇总给最终callback,但是剩余的任务仍然会继续执行只是不会返回值给最终callback了。

参考:

官网文档 https://caolan.github.io/async/docs.html

官方github issues https://github.com/caolan/async/issues/248

 

 

发表评论