0

This is my code

var count = 1;

for (var key in result.data) {
    if (count == 10) {
        // I want to delay 1 second here
    }

    var value = result.data[key];
    generate(key, value);
    count++;
}

As you see , I iterate throught result.data , and added count to determine when to add delay.
I just want to add 1 second delay inside this loop when count == 10 as I shown .

adiga
  • 28,937
  • 7
  • 45
  • 66
Steven Sann
  • 389
  • 1
  • 3
  • 14

5 Answers5

2

You can use async/await to pause for a sec. Like this.

(async () => {

    let count = 1;

    const array = [1,2,3,4,5,6,7,8,1,2,3,4,5];

    for (let key in array) {

        if (count === 10) {

            await new Promise((resolve) => {

                console.log('Paused for 1 sec');

                setTimeout(() => {
                    console.log('Continued');
                    resolve();
                }, 1000);
            });
        }

        console.log(key);

        count++;
    }
})();
Alex G
  • 1,742
  • 2
  • 8
  • 13
0

Maybe it helps you:

function delay(functionToDelay, ms) {
return function() {
  var savedThis = this;
  var savedArguments = arguments;

  setTimeout(function() {
    functionToDelay.apply(savedThis, savedArguments);
  }, ms);
  };
}

First argument - function you want to delay. Second - milliseconds

HereAndBeyond
  • 173
  • 3
  • 11
0

I'm assuming, you want to call the generate function after 1 second when the count is 10

You can use setTimeout like this:

var result = {
    data: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
}

var count = 1;

for (let key in result.data) {
    if (count == 10) {
        setTimeout(() => generate(key, result.data[key]), 1000)
    } else {
        generate(key, result.data[key])
    }

    count++;
}

function generate(key, value) {
    console.log(value);
}
adiga
  • 28,937
  • 7
  • 45
  • 66
-1

What you need is setTimeout().

Your code will be something like this:

var count = 1;

for (var key in result.data) {
    if (count == 10) {
        // I want to delay 1 second here
        setTimeout(function(){ alert("1 second delay!"); }, 1000);
    }

    var value = result.data[key];
    generate(key, value);
    count++;
}
holydragon
  • 4,254
  • 3
  • 23
  • 40
-1

Below you can find usable example for it.

PS: Edit

for (var key in result.data) {
    if (count == 10) {
        // I want to delay 1 second here
        setTimeout(generate.bind(key, result.data[key]), 1000);
    }
    else
        generate(key, result.data[key])
    count++;
}
Derviş Kayımbaşıoğlu
  • 24,022
  • 2
  • 42
  • 59