在异步程序的执行过程中,有些任务可能会随时发生,跟程序中的其他部分在做什么没关系,什么时候做这些任务都不会出问题。
但也有些任务只能在某些特定的任务之前或之后做。
让一组异步任务顺序执行的概念被 Node社区称为流程控制。
这种控制分为两类:串行和并行:
串行的异步任务在概念上和同步逻辑类似,然而并行任务不必一个接一个地执行。
需要一个接着一个执行的任务叫作串行任务。
例如创建一个目录并往里面放一个文件的任务就是串行的。毕竟你不能在创建目录前往里放文件。
不需要一个接着一个执行的任务叫作并行任务。
这些任务彼此之间开始和结束的时间并不重要,但在后续逻辑执行之前它们应该全部执行完。
下载几个文件然后把它们压缩到一个zip归档文件中就是并行任务。这些文件的下载可以同时进行,但在创建归档文件之前应该全部下载完。
跟踪串行和并行的流程控制要做编程记账的工作。
在实现串行化流程控制时,需要跟踪当前执行的任务,或维护一个尚未执行任务的队列。实现并行化流程控制时需要跟踪有多少个任务要执行完成了。
有一些可以帮你记账的流程控制工具,它们能让组织异步的串行或并行化任务变得很容易。尽管社区创建了很多序列化异步逻辑的辅助工具,但亲自动手实现流程控制可以让你看透其中的玄机,让你对如何应对异步编程中的挑战有更深的认识。