Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多个请求之间存在for循环和超时_Javascript_Node.js - Fatal编程技术网

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”),这样,您就不需要延迟,您可以通过这种方式发出任意多的请求

谢谢,这正是我一直在寻找的