async.series依次调用您的函数(等待前面的每个函数完成,然后再开始下一个)。
async.parallel将同时启动它们(或者无论如何在单线程区域同时启动它们)。
主回调是对
async.parallel或的调用中可选提供的回调
async.series(签名为
async.parallel(tasks,[callback]))
所以实际上是这样的:
平行:
parallel
启动所有任务,然后等待- 所有四个任务都安排了超时
- 超时100次触发,添加其结果(结果为
[ , "Two"]
) - 超时200次触发,添加其结果(结果为
["One", "Two"]
) - 超时400触发,返回错误并返回
undefined
结果(结果为["One", "Two", undefined]
) parallel
发现错误,立即返回到目前为止收到的结果- 600超时触发,但没人在乎返回结果
系列:
series
触发第一个任务;它计划超时。series
等到回调在200毫秒后被调用,然后添加结果。(结果为["One"]
)series
触发第二项任务;它计划超时。series
等到回调在100毫秒后被调用,然后添加结果。(结果为["One", "Two"]
)series
发射第三项任务;它计划超时。series
等到回调在400ms后被调用,然后添加结果并由于错误而退出。(结果为["One", "Two", undefined]
)- 第四个任务永远不会执行,并且它的超时也不会被调度。
您获得相同结果的事实是由于您依赖于
setTimeout任务。
至于如何
parallel有效地使用,请尝试使用下载一百个网页
parallel。然后使用
series。走着瞧吧。



