Javascript 多个请求之间存在for循环和超时
我有一个函数可以多次启动请求,但需要在每个请求之间添加延迟,这样我就不会向服务器发送垃圾邮件:Javascript 多个请求之间存在for循环和超时,javascript,node.js,Javascript,Node.js,我有一个函数可以多次启动请求,但需要在每个请求之间添加延迟,这样我就不会向服务器发送垃圾邮件: async function multiReq(iterationNr){ for (let i=0; i++; iterationNr ) { //send request here res.push(resultOfTheRequest); } return res; }; console.log(multiReq(10)); 我应该在哪里设置超时,例如
async function multiReq(iterationNr){
for (let i=0; i++; iterationNr ) {
//send request here
res.push(resultOfTheRequest);
}
return res;
};
console.log(multiReq(10));
我应该在哪里设置超时,例如req 1、wait 1秒、req 2、等待1秒直到完成,然后返回res array?一个选项是
等待
一个承诺
,当您需要添加延迟时,它会在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;
}
const delay=ms=>新承诺(resolve=>setTimeout(resolve,ms));
异步函数multiReq(迭代nr){
常数res=[];
for(设i=0;i
还要注意的是,
for
循环的第二个条件是第二个,第三个条件是递增的,而不是相反,并且函数块}
的结尾不应该有分号。我发现,如果您使用的是http 1.1,并且在请求头中放上了“Connection:close”(默认为“keep alive”),这样,您就不需要延迟,您可以通过这种方式发出任意多的请求 谢谢,这正是我一直在寻找的