Verschlussbasis Lösung, unter Verwendung.210 und clearInterval()
:
// define a generic repeater
var repeater = function(func, times, interval) {
var ID = window.setInterval(function(times) {
return function() {
if (--times <= 0) window.clearInterval(ID);
func();
}
}(times), interval);
};
// call the repeater with a function as the argument
repeater(function() {
alert("stuff happens!");
}, 3, 60000);
EDIT: Eine andere Möglichkeit, das gleiche auszudrücken, mit setTimeout()
statt:
var repeater = function(func, times, interval) {
window.setTimeout(function(times) {
return function() {
if (--times > 0) window.setTimeout(arguments.callee, interval);
func();
}
}(times), interval);
};
repeater(function() {
alert("stuff happens!");
}, 3, 2000);
Vielleicht ist das letztere ein bisschen leichter zu verstehen.
In der setTimeout()
Version können Sie sicherstellen, dass die nächste Iteration geschieht nur nach die vorherige Ausführung beendet ist. Sie würden einfach die func()
Linie über die setTimeout()
Linie verschieben.
schnell und schmutzig, aber warum nicht einfach einen Zähler erhöhen jedes Mal, wenn die Anfrage ausgeführt wird und wenn (Zähler <3) {intervalRun();}? – Optimate
@optimate: Was ist intervalRun()? – Nosredna
Er meinte 'setInterval' zu sagen. – SLaks