我有一个可以多次触发请求的功能,但是需要在每次之间添加延迟,这样我才不会向服务器发送垃圾邮件。
async function multiReq(iterationNr){
for (let i=0; i++; iterationNr ) {
//send request here
res.push(resultOfTheRequest);
}
return res;
};
console.log(multiReq(10));
我应该在哪里超时,以便例如要求1,请等待1秒,要求2,请等待1秒直到完成,然后返回res数组?
答案 0 :(得分:3)
一种选择是await
Promise
,只要您需要添加延迟,它就会在1秒后解析:
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
async function multiReq(iterationNr){
const res = [];
for (let i=0; i < iterationNr; i++) {
// If you don't need to wait for the response to come back yet, remove the await:
const result = await makeRequest();
await delay(1000);
res.push(result);
}
return res;
}
还请注意,for
循环的第二个条件是 ,第三次是 incrementer ,相反,该功能块{{1} }结束后不应包含分号。
答案 1 :(得分:0)
我发现,如果您使用的是http 1.1,并且在请求的标头中放置了“ Connection:close”(默认为“ keep-alive”),则不需要延迟,并且可以将其触发为您可以按照这种方式请求许多请求。