几百个数据,Promise.all 没做控制并发?那你心可真大啊!

网站建设3年前发布
9 00

几百个数据,Promise.all 没做控制并发?那你心可真大啊!,我最近在做一个需求:批量去往数据库里存储一些东西,数量可能一次性达到几百个,也就意味着我需要一次性往数据库里存储几百次,我是这么做的:,正当我觉得这个需求很轻松的时候。。在 Code Review 上,我被团队的大佬们给呵斥了一顿,理由是:存储的操作发生在服务器,服务器是很脆弱的,你一次性存储几百个,服务器崩了怎么办?,随后大佬们提出解决方案:控制并发,大佬们是真的强,感觉这种东西已经是大佬们的常规操作了。。,意思就是,比如我有几百个存储操作,我不能一次性去全部执行,而是要控制一次性只能执行10个操作,10个中有一个执行完了,就拿还没执行的操作补上去,就这样一直到这几百个操作全部执行完为止。。,其实很简单,可以直接用库,比如async-pool、es6-promise-pool、p-limit,只要是能用库的,我建议不要自己去写,因为不定因素很多,你自己写的肯定没有库写的好,你说呢~,看到一位兄弟实现的挺不错的,链接:https://segmentfault.com/a/1190000016389127,这是async-pool这个库的核心源码:,大概的逻辑可以总结为:,使用方式:

© 版权声明

相关文章