I have the following code below (note, I'll be adding more code into the loop later, but I need this to work first):
var calls_on = true;
function hunt(max, ext, duration){
if(duration != '0' || duration != false || duration != 0){
duration = duration * 1000; // milliseconds to delay before stopping calls
var t=setTimeout(function(){calls_on=false;}, duration);
}
while(calls_on){
alert('reached');
}
alert('test');
}
I have confirmed that the 'duration' conditional is executing, and the timeout handle is being set. However, this loop never ends, and I never see the setTimeout callback getting executed. When I remove the loop entirely, it works fine (since that makes it the only code in the function).
Any help would be appreciated. Is setTimeout somehow out of scope? How is the loop derailing the timeout?
JavaScript is single-threaded. As long as the code is stuck in the loop, the timeout will never run.
Anything that relies on the timeout being completed should be inside the timeout.
From Event-Based Programming: What Async Has Over Sync
So, since you have an infinite loop after it, your
setTimeout
is never executed.