我有一些代码正在迭代从数据库中查询的列表,并为该列表中的每个元素发出 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 */});
此代码在 Node 4.3.2 上运行。重申Promise.all一下,是否可以进行管理,以便在任何给定时间只有一定数量的 Promise 正在进行?