Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

171
Visualizações
Make a loop wait for 2 seconds after fetching every 5 pages

I want the script call to wait for 2 seconds after every 5 pages.

My requirements are that the for loop should wait for 2 seconds when pageData.Number reaches page 5. So basically, the loop should wait for 2 seconds after every 5 pages.

Not sure how to check if the page reaches page 5 and wait for 2 seconds.

for (var i = 1; i <= pageData.Number; i++) {
  var pageRequest = $.getJSON(URL, function (data) {
    if (i % 5 == 0) {
      sleep(5000);
    }
    /* .... */
  }).fail(function () {
    errorPage.push(i);
  });
}

// from https://www.sitepoint.com/delay-sleep-pause-wait/
function sleep(milliseconds) {
  const date = Date.now();
  let currentDate = null;
  do {
    currentDate = Date.now();
  } while (currentDate - date < milliseconds);
}
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Here's how you could do it - with async/await and without jQuery.

/**
 * @summary waits a specified number of seconds
 * @param {number} [seconds] seconds to wait
 * @returns {Promise<void>}
 * @link https://github.com/samliew/se-electionbot/blob/master/src/bot/utils.js#L910
 */
const wait = (seconds = 1) => new Promise((r) => setTimeout(r, seconds * 1e3));

/**
 * Your main function, async
 */
(async function () {
  
  const errorPage = [];
  const pageData = {
    Number: 10,
  };

  // Test URL
  const url = 'https://reqbin.com/echo/get/json';
  
  for (let i = 1; i <= pageData.Number; i++) {
  
    // Fetch url
    const data = await fetch(url).then(response =>
      // Convert data to json, or return null on error
      response.ok ? response.json() : errorPage.push(i) && null
    );
    
    // Data exists
    if(data) {
        // Do something with data
        console.log(`Request ${i} completed.`);
    }

    // Short wait after every fifth request
    if (i % 5 === 0) {
      console.log('Waiting for 2 seconds...');
      await wait(2);
    }
  }

  console.log('Done!');
})();

about 4 years ago · Juan Pablo Isaza Relatório

0

I think you need something like this. It uses javascript remainder operator and a custom sleep function.

for (var i = 1; i <= pageData.Number; i++) {
  //setTimeout(func, 2000);              
  var pageURL = Url + "?startDate=" + moment(startDate).format(dateFormat) + "&endDate=" + moment(endDate).add(1, 'day').format(dateFormat) + "&pageNumber=" + i;               
  var pageRequest = $.getJSON(URL, function (data) {
  if (i % 5 == 0) {
    sleep(2000);
  }
}

// from https://www.sitepoint.com/delay-sleep-pause-wait/
function sleep(milliseconds) {
  const date = Date.now();
  let currentDate = null;
  do {
    currentDate = Date.now();
  } while (currentDate - date < milliseconds);
}

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda