🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 什么时候会用到异步流程控制 主要讲2个场景 * 数据库 * 工具类:比如爬虫 ## 数据库 一般说crud指的是增删改查,也可以指对某个表的增删改查。 所以有一个概念叫dao(data access object),一般会先定义entity实体,然后定义该entity的dao。但大部分业务逻辑里,一个表的操作是不够的。 然后有个一service层的概念,即组装多个dao来完成某一业务逻辑,成为service(不要和rpc服务的服务混了)。 一般目录 ![Code](https://i5ting.github.io/wechat-dev-with-nodejs/async/img/code.png) 举例:发帖完成后,更新用户的发帖数 * step 1:发帖 * step 2:更新用户的发帖数 更复杂的业务可能要几十个表甚至上百个表来完成。所以,类似的有先后顺序的多个步骤的流程都需要使用异步流程控制 ## 工具类:比如爬虫 爬取一本书的流程 * 先取列表 * 再去章节 技能 * node-crawler 爬取,发送http请求,是基于request模块的 * 结合jsdom,使用类似于jquery的dom操作,解析结果 node-crawler有2种用法 * c.queue方法如无callback,走全局的callback,这是获取列表的时候的用法 * c.queue方法如有callback,走自己的callback,这是获取章节的用法 我们的做法 * 最小化问题,先关注爬取一本书的流程 * 爬取一本书的流程中的列表 * 爬取一本书的流程中的章节 在这个过程中,我们可以很好的学习node-crawler和jquery的dom操作,知识点整体来说比较少,更加容易学习。 那么,我们想想,如果不是遍历直接函数调用解决,该怎么做呢? 比如一本书有10章,爬完第一章,才能爬第二章,以此类推