function whatever () {
  for (var i=0; i < arr.length; i++) {
     do something
    slowDown();
  };
};
 function slowDown () {
   time = setTimeout(function (){
       do something else
   }, 5000);
};
            Asked
            
        
        
            Active
            
        
            Viewed 72 times
        
    -1
            
            
        - 
                    What is the expected behavior? – Nicholas Tower Jul 19 '21 at 16:38
- 
                    `slowDown()` will schedule something to execute *later*. It will not actually slow down anything. If you have a loop over 10 items, then you'd just have 10 tasks scheduled to execute 5 seconds later. – VLAZ Jul 19 '21 at 16:40
- 
                    If I try it the other way around, the length of the array is undefined – Kolu99 Jul 19 '21 at 16:45
- 
                    You can await a promise instead: https://stackoverflow.com/questions/951021/what-is-the-javascript-version-of-sleep – ArchKudo Jul 19 '21 at 17:06
2 Answers
0
            Rather than that, why not just set and interval, execute on the current array value until it's done, then clear it?
let ctr = 0, time = setInterval(function() {
    let curitem = arr[ctr];
    // do somethign with curitem
    if (++ctr >= arr.length) clearInterval(time)
  }, 5000);
 
    
    
        Kinglish
        
- 23,358
- 3
- 22
- 43
- 
                    thank you. this works well. however, when the ctr++ >= arr.length I'm getting undefined – Kolu99 Jul 19 '21 at 17:14
-1
            
            
        What @vlaz has pointed out in the comment to the question is correct:
slowDown() will schedule something to execute later. It will not actually slow down anything. If you have a loop over 10 items, then you'd just have 10 tasks scheduled to execute 5 seconds later.
Not sure if this might help, but I think this is quite similar https://stackoverflow.com/a/5226333/10293708
 
    
    
        Ankit Gupta
        
- 175
- 6
 
    