Citat:
Ursprungligen postat av
gadzoox
[...]
2. Scope, var tanken. Men jag har ju lite otur ibland när jag tänker...
Där känner jag igen mig! Skulle behöva ha unit-tests (eller liknande) av mig själv emellanåt.
ONT:
Här är en variant som kan skapa flera oberoende intervallhanterare om man vill:
[PHP]var ticker = (function () {
function Ticker(action, interval) {
this.action = action;
this.interval = interval;
this.ref = void 0;
}
Ticker.prototype = {
"constructor": Ticker
, "start": function () {
this.ref || (this.ref = setInterval(this.action, this.interval));
}
, "stop": function () {
this.ref && (this.ref = clearInterval(this.ref));
}
};
return {
"create": function (action, interval) {
return new Ticker(action, interval);
}
};
})();[/PHP]
En ticker skapas genom att man skickar in en funktion och ett intervall (i ms.). Sedan kan den startas och stoppas.
[PHP]
function intervalHandler() {console.log(+new Date);}
var t = ticker.create(intervalHandler, 1000);
t.start();
// t.stop(); // senare..
// går också bra att skapa flera andra:
var t2 = ticker.create(function () {console.log("t2");}, 5000)
, t3 = ticker.create(function () {console.log("t3");}, 2000);
t2.start();
t3.start();
[/PHP]
Användning passande med gadzoox HTML för att testa:
[PHP]
var target = document.getElementById("output");
var timer = ticker.create(function () {
target.innerHTML += "tick ";
}, 300);
[/PHP]
Knapparna startar och stoppar då alltså tickern vid namn
timer.
/p