Home > OS >  How to break a nodejs for loop if the execution takes more than 20 seconds?
How to break a nodejs for loop if the execution takes more than 20 seconds?

Time:12-06

Suppose I have a forloop that does some execution. I would like to break the for loop if it takes more than 20 seconds to execute.


async function mainFunc(){

for (let step = 0; step < 5; step  ) {
  // Runs some complex operation that is computationally intensive
//someFunc() is a async method. SomeAnotherFunc() is a synchronous one.
await someFunc();
someAnotherFunc();
await someFunc(); 
 
}
}

Can anyone provide me a simple solution where tracking the time and breaking the loop happens on a separate thread so that I don't burden my existing for loop execution?

Please note:I have removed the dummy code and I have given explanation in the comments. I belive that I found the solution given below by one of the users and it seems perfect.

CodePudding user response:

That should be fairly simple

var stop = false;
setTimeout(()=>{ stop = true; }, 20 * 1000);

for (let step = 0; step < 5; step  ) {
    if (stop) break;
}

Note:

The for loop without async/await is synchronous which means even calling multiple requests/db calls/ etc. will only take less then a second for the for loop to finish. So i can't imagine what you would do in it that would take 20 seconds

CodePudding user response:

Have you tried to add a timer inside the for loop and when it finish the 20 seconds to break?

How to do a timer in Angular 5
https://www.w3schools.com/js/js_break.asp

  • Related