【发布时间】:2012-09-16 07:21:48
【问题描述】:
我有一个数组。我可以用 foreach 方法循环它。
data.forEach(function (result, i) {
url = data[i].url;
request(url);
});
请求函数正在向给定的 url 发出 http 请求。 但是同时提出所有这些请求会导致各种问题。
所以我想我应该通过引入某种计时器来减慢速度。
但我不知道如何将 forach 循环与 setTimeOut/setInterval 结合起来
请注意我在服务器 (nodejs) 上而不是在浏览器上执行此操作。
感谢您的帮助。
【问题讨论】:
-
不完全是你想要的,但你可以尝试排队:github.com/caolan/async#queue。 IE 一次只能执行 10 个请求。
-
“各种问题”是什么意思?
-
@Bergi 在我自己的 nodejs 服务器上,任何“代理”都可以发出 5 个请求的默认限制。我可以增加,但我不想这样做。对于外部服务器,如果您发出大量并发请求,他们会切断您的联系。这就是我所说的“各种问题”。
-
@saeed:您的
request()函数是否接受回调。如果是这样,您不需要setTimeout来处理 5 个请求限制。只需按顺序运行它们,在前一个完成后执行下一个。 -
@user1689607 这意味着在收到 http 响应后继续执行。我认为这比设置计时器更复杂。
标签: javascript node.js settimeout throttling