У меня есть функция, которая запускает запрос несколько раз, но вам нужно добавить задержку между каждым, чтобы я не спам сервера:
async function multiReq(iterationNr){
for (let i=0; i++; iterationNr ) {
//send request here
res.push(resultOfTheRequest);
}
return res;
};
console.log(multiReq(10));
Где у меня должен быть тайм-аут, так что у меня есть, например, req 1, подождите 1 сек, req 2, подождите 1 сек до завершения и затем возвращайте массив res?
Один из вариантов заключается в 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
циклов есть условие второе, а третий - третий, а не наоборот, и что функциональные блоки }
не должны иметь точку с запятой после окончания.
Я обнаружил, что если вы используете http 1.1 и в заголовке запроса вы указали "Connection: close" (по умолчанию "keep-alive"), то вам не нужна задержка, и вы можете таким образом выполнить столько запросов, сколько тебе нравится.