ControlFlow(2)--auto
2016-07-25 本文已影响2人
LuciferTM
auto用来处理有依赖关系的多个任务的执行。比如某些任务之间彼此独立,可以并行执行;但某些任务依赖于其它某些任务,只能等那些任务完成后才能执行 。虽然我们可以使用parallel和series结合起来实现该功能,但如果任务之间关系复杂,则代码会相当复杂,以后如果想添加一个新任务,也会很麻烦。 这时使用auto,则会事半功倍。
如果有任务中途出错,则会把该错误传给最终callback,所有任务(包括已经执行完的)产生的数据将被忽略。
如果不关心错误和最终数据,可以不用写最后那个callback。
async.auto(tasks, [callback])
我要写一个程序,它要完成以下几件事:
- 从某处取得数据
- 在硬盘上建立一个新的目录
- 将数据写入到目录下某文件
- 发送邮件,将文件以附件形式发送给其它人。
分析该任务,可以知道1与2可以并行执行,3需要等1和2完成,4要等3完成。
可以按以下方式来使用auto函数。
代码:

结果:

如果出错:
代码:

结果:
