以下TypeScript逐个调用
doSomething(action)
,一次只处理一个。(也就是说在第一个项目完成之前不会进行第二个项目的调用)。async performActionsOneAtATime() {
for (let action of listOfActions) {
const actionResult = await doSomethingOnServer(action);
console.log(`Action Done: ${actionResult}`);
}
}
这个会立即将所有请求发送到服务器(不等待任何响应):
async performActionsInParallel() {
for (let action of listOfActions) {
const actionResultPromise = doSomething(action);
actionResultPromise.then((actionResult) => {
console.log(`Action Done: ${actionResult}`);
});
}
}
但我真正需要的是一种限制它们速度的方法,也许同时打开10或20个调用。(一次一个太慢了,但全部600个将使服务器超载。)
但我很难弄清楚这一点。
你有什么建议可以控制每次X个调用吗?
(这个问题使用TypeScript,但我也可以接受 ES6 JavaScript 的答案。)