Monday, 24 April 2017

Adding delay to promises

so I have a loop for creating promise when I do a request to a certain Url:

for (let j = 1; j < nbRequest; j++)

{
 const currentPromise = new Promise((resolve, reject) => {
    request(
      `someUrl${j}`,
      (error, response, body) => {
        if(error || !response) {
          console.log("Error: " + error);
        }

    console.log("Status code: " + response.statusCode + ", Connected to the page");

    var $ = cheerio.load(body);
    let output = {
      ranks: [],
      names: [],
      numbers: [],
    };

   //some stuff to do

    console.log("HERE 1");
    return resolve(output);
  }
);
  });
  promises.push(currentPromise);
}

After that I'm writing result of my promises in a csv file :

Promise.all(promises).then((outputs) => {
  console.log('Request received');
  let ranks;
  let names;
  let numbers;

  outputs.forEach((output) => {
    ranks = _.concat(ranks, output.ranks);
    names = _.concat(names, output.names);
    numbers = _.concat(numbers, output.numbers);
  });

  for (i = 0; i < ranks.length; i++)
  {
    writer.write({Rang: ranks[i], Nom: names[i] , Nombre: numbers[i]});
  }
});

But here's the problem: I'm willing to add a delay between each promise. Any idea ?



via ezdin gharbi

No comments:

Post a Comment