2016-09-07 1 views
1

Wie kann ich diesen Vorgang nach, sagen wir, 5 Sekunden stoppen?Expire oder Time Out nie endende Schleife nach X Sekunden

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
<script type="text/javascript"> 
    function changeBanner(){ 
     // my change banner code 
    } 
    window.onload = function() { setInterval(changeBanner, 100) }; 
</script> 

Also aktuell ändere ich das Banner alle 100 Millisekunden. Aber ich möchte, dass es nach etwa 5 Sekunden aufhört.

Ich dachte setTimeout könnte den Trick machen;

window.onload = function() { setTimeout(setInterval(changeBanner, 100), 5000) }; 

Aber das macht keinen Unterschied.

+0

Wow. Danke für die schnelle Antwort jeder. – mikelovelyuk

Antwort

6

Ich möchte es nach etwa 5 Sekunden stoppen.

speichern den Rückgabewert von setInterval gegeben und dann mit clearInterval

var timer = setInterval(changeBanner, 100); 
setTimeout(function() { 
    clearInterval(timer) 
}, 5000); 

Es gibt auch mehrere Bibliotheken, die Funktion Wrapper implementieren, das gleiche zu erreichen. Zum Beispiel in underscore.js könnten Sie _.before verwenden:

var changeBannerLimited = _.before(50, changeBanner); 
var timer = setInterval(changeBannerLimited, 100); 

Beachten Sie, dass im Gegensatz zu clearInterval mit diesem wird auch weiterhin für immer die changeBannerLimited Funktion aufzurufen, aber nach 50-mal aufgerufen wird (10 * 5 Sekunden) nicht mehr vergehen der Aufruf an ChangeBanner.

Auf einer seitlichen Anmerkung Ich wählte Underscore.js, weil ich es gut kennen und weil es schön annotated source code formated bietet so können Sie leicht verstehen, was wirklich hinter den Kulissen vor sich geht.

+1

Ich bin kein Front-End-Entwickler und das ist nur eine Prototyp-Anwendung wirklich. Also werde ich wahrscheinlich die clearInterval Antwort verwenden, danke. Ich habe noch nie von underscore.js gehört, aber ich werde es mir merken, wenn ich mehr Front-End spiele! – mikelovelyuk

3

Sie können den Rückgabewert von setInterval einer Variablen speichern, damit Sie später stornieren:

function changeBanner(){ 
    // my change banner code 
} 
window.onload = function() { 
    var id=setInterval(changeBanner, 100); 
    window.setTimeout(function() { 
     window.clearInterval(id); 
    },5000); 
}; 
2

bestehen setInterval Ausgabe in Variable der Lage sein, clearInterval zu nennen;

window.onload = function() { 

    var job= setInterval(changeBanner, 100) ; 
    setTimeout(clearInterval(job), 5000) 

}; 
3

Verwenden Sie clearInterval.

window.onload = function() { 
    var bannerInterval = setInterval(changeBanner, 100); 
    setTimeout(function() { 
     clearInterval(bannerInterval); 
    }, 5000); 
};