3.1 什么时候会用到异步流程控制
最后更新于:2022-04-01 23:33:01
# 什么时候会用到异步流程控制
主要讲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章,爬完第一章,才能爬第二章,以此类推
';