Witam.
Piszę prosty add-on do Firefoxa i natrafiłem na problem, z którym nie potrafię sobie poradzić. Potrzebuję stworzyć wiele timerów odliczających co sekundę.
Napisałem m.in taki kod:
var timers = require("sdk/timers");
function createTimer(ile, nr) {
i = ile;
var id = timers.setInterval(function()
{
console.log("Czas do konca " + i + " NR: " + nr);
i--;
if (i == 0) {
timers.clearInterval(id);
}
;},1000);
}
createTimer(10, 1);
createTimer(5, 2);
Wyjście:
console.log: test: Czas do konca 5 NR: 1
console.log: test: Czas do konca 4 NR: 2
console.log: test: Czas do konca 3 NR: 1
console.log: test: Czas do konca 2 NR: 2
console.log: test: Czas do konca 1 NR: 1
console.log: test: Czas do konca 0 NR: 2
console.log: test: Czas do konca -1 NR: 2
console.log: test: Czas do konca -2 NR: 2
console.log: test: Czas do konca -3 NR: 2
console.log: test: Czas do konca -4 NR: 2
itd...
Jak widać zostaje zmieniony czas pierwszego timera, oraz drugi nigdy się nie zatrzymuje. Nie znam za dobrze javascriptu, wiem jedynie, że działa w jednym wątku. Dodam tylko, że umieszczenie zmiennej timers wewnątrz funkcji nic nie daje, tak samo zresztą jak utworzenie zmiennych timer1, timer2. Dziękuję za pomoc.