关于async模块的eachLimit方法的疑问
发布于 11 年前 作者 yukjin 7715 次预览 最后一次回复是 11 年前 来自 问答
在看@bsspirit的async_demo时,看到demo作者说eachLimit方法是分批执行,同一批内并行,批与批之间按顺序。请问如何理解这句话的意思? 我看了源码怎么感觉eachlimit只是对同时运行的任务个数做了限制,如果给前面的任务足够的延迟,后面任务就会在前面任务执行完成前完成,请问批与批之间的执行顺序是怎么体现的?
1 回复
感觉你是对的. 稍微修改下作者的代码, 也可以验证:
程序输出为: 0007> 1.5 enter: #1 - 100 0009> 1.5 enter: #2 - 800 0110> 1.5 handle: #1 0110> 1.5 enter: #3 - 100 0211> 1.5 handle: #3 0212> 1.5 enter: #4 - 200 0412> 1.5 handle: #4 0412> 1.5 enter: #5 - 300 0713> 1.5 handle: #5 0713> 1.5 enter: #6 - 400 0810> 1.5 handle: #2 1114> 1.5 handle: #6 1115> 1.5 err: undefined
可以看到#2在队列中很久, #3, #4和#5都执行完后, #2才执行完.