Kilkakrotny setInterval

0

Witam,

W swoim programie próbuje użyć obok siebie kilku funkcji setInterval(), ale mam z tym mały problem. Sam funkcje działają ok, ale parametr określający czas interwału w drugiej funkcji jest nieprawidłowy. Na moje oko pierwsza funkcja powinna wykonywać się co 200ms i tak jest, a druga co 2000ms, ale druga również wykonuje się co 200ms. Dlaczego tak jest skoro setInterval są przypisane do różnych funckji ? Nie może być kilku w jednym programie ? Próbowałem również, po wykonaniu pierwsze użyć clear interval(), ale to również nie pomogło.

var timer = setInterval(function(){
	gameCore.growDots();
	gameCore.checkState();
}, 200);
		
var timer2 = setInterval(function(){
	gameCore.generateDots();	
}, 2000);
1

Skąd wiesz, że wykonuje się co 200ms?
Cudów nie ma :P

0

Wiem, że nie ma cudów i dlatego pytam co może powodować takie zachowanie :). Robię prostą grę i jedna funkcja powoduje 'wzrost kropek', a druga ich pojawianie się. Jeśli w pierwszej zmienie na 5000ms, kropki będą pojawiać się zdecydowanie wolniej, w drugim setinterval ten wpisany czas jest kompletnie ignorowany.

0

Ale w jaki obiektywny sposób to mierzysz? Bo liczenie kropek na ekranie nie jest niezawodną metodą :P
Zrób sobie console.log w obydwu i upewnij się, że działają poprawnie - jeśli tak, to masz błąd gdzieś u siebie (np. dodatkowe timery czy też po prostu niewyrabiająca się przeglądarka).

1

Obciąłeś kod - fajnie, ale obcięty kod sprawdzaj :p http://jsbin.com/fopugohonu/edit?html,css,js,output

Jeżeli faktycznie coś jest nie tak, to na pewno nie w tym miejscu w kodzie.

1

Możesz sprawdzić empirycznie https://jsfiddle.net/seq68ney/

0

@Patryk27

Tak, zdecydowanie cudów nie ma ;)

Kropki pojawiały się co 200ms, ale gdy wstawiłem do drugiego setInterval console.log, to wykonywał się już w prawidłowych odstępach czasu - czyli mój błąd, to pewne.

Pierwszy setInterval odwoływał do metody, która w instrukcji warunkowej

if(gameCore.generateDots() == false && params.dotsPix == 0){
	alert('Awesome, you go to next level!');
	params.nextLevel = true;
};

miała metode generateDots.

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