本篇文章主要谈一下我对于 TS 中异步编程的理解:
为什么要用异步?
基础概念
线程
在讲异步之前,需要了解的是:TypeScript 是单线程。
异步
打个比方:你现在是开发人员,要做产品提的一个新需求 A,你在仔细思考后跟产品提出需要一些配置来完成 A,然后产品就去搞。那么在产品搞配置的过程中,身为开发不能总待着,需要找点别的事 B 做,等产品把配置给你,你决定先做完 B 再去做 A。
这个例子中,开发在需求没到的时候去做别的事情,就是一种异步的方式。
为什么用
由于 TS 是单线程,这就代表着所有的逻辑都是排队执行的,当一个逻辑执行的时候,其余的逻辑需要等待其执行完;如果当前逻辑是一个计算操作,比如数组排序,其实还好,但如果是一个 IO 操作,比如从 mysql 中查询业务数据呢?这种情况下,如果线程就阻塞着等查询结果返回,无疑是在浪费 CPU 资源,所以异步编程就理所应当了。
异步过程中,TS 中的内存管理
在项目中有各种嵌套的 callback 使用,其中就有一些代码的使用类似如下:
const redisClient