Wątek przeniesiony 2014-06-20 20:20 z Webmastering przez dzek69.

Firefox sdk - stworzenie wielu timerów odliczających co sekundę

0

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.

1

pewnie dlatego, że i jest zmienną globalną u Ciebie i oba timery pracują na tej samej zmiennej. warunek masz czy jest RÓWNE zero, a jeden timer zmienia do zera, drugi do -1, a potem sprawdza.

to chyba da się zauważyć po outpucie, że Ci nie zlicza od dziesięciu, tylko od drugiej wartości i oba pracują na tym samym ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1