How can I add a delay inside each iteration of an

2019-04-28 13:40发布

问题:

How can I add a delay inside each iteration of an _.each loop to space out the calling of an interior function by 1 second?

  _.each(this.rows, function (row, i) {
      row.setChars(msg[i] ? msg[i] : ' ');
  });

回答1:

You don't need extra IIFE

_.each(this.rows, function (row, i) {
    setTimeout(function () {
        row.setChars(msg[i] ? msg[i] : ' ');
    }, 1000 * i);
});

since you're not doing it in an explicit for loop.



回答2:

Found an answer, just add a self invoking function inside the _.each loop with a timeout that continues to scale based on the number of iterations of the loop.

Here's a working example (Edited to remove redundancy):

  _.each(this.rows, function (row, i) {
      setTimeout(function () {
          row.setChars(msg[i] ? msg[i] : ' ');
      }, 1000 * i);
  });