несколько запросов для цикла и времени ожидания между каждым

1

У меня есть функция, которая запускает запрос несколько раз, но вам нужно добавить задержку между каждым, чтобы я не спам сервера:

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?

Теги:

2 ответа

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 циклов есть условие второе, а третий - третий, а не наоборот, и что функциональные блоки } не должны иметь точку с запятой после окончания.

  • 0
    Спасибо, это именно то, что я искал
0

Я обнаружил, что если вы используете http 1.1 и в заголовке запроса вы указали "Connection: close" (по умолчанию "keep-alive"), то вам не нужна задержка, и вы можете таким образом выполнить столько запросов, сколько тебе нравится.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню