setTimeout (Rückruf) gefolgt von while-Schleife wird nie ausgelöst

Ich habe den folgenden Code unten (beachten Sie, dass ich später mehr Code in die Schleife einfügen werde, aber ich brauche diesen, um zuerst zu arbeiten):

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');
}

Ich habe bestätigt, dass die Bedingung 'duration' ausgeführt wird und das Timeout-Handle festgelegt wird. Diese Schleife endet jedoch nie und ich sehe nie, dass der setTimeout-Rückruf ausgeführt wird. Wenn ich die Schleife vollständig entferne, funktioniert sie einwandfrei (da dies den einzigen Code in der Funktion darstellt).

Jede Hilfe wäre dankbar. Ist setTimeout irgendwie außer Reichweite? Wie entgleist die Schleife das Timeout?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage