使用ES6的Promise.all()时限制并发性的最佳方法是什么?
2022-08-30 01:55:01
我有一些代码正在迭代从数据库中查询的列表,并为该列表中的每个元素发出HTTP请求。该列表有时可能是一个相当大的数字(以千计),我想确保我不会遇到具有数千个并发HTTP请求的Web服务器。
此代码的缩写版本当前如下所示...
function getCounts() {
return users.map(user => {
return new Promise(resolve => {
remoteServer.getCount(user) // makes an HTTP request
.then(() => {
/* snip */
resolve();
});
});
});
}
Promise.all(getCounts()).then(() => { /* snip */});
此代码在节点 4.3.2 上运行。重申一下,是否可以管理,以便在任何给定时间只有一定数量的承诺在进行中?Promise.all