Javascript setInterval i clearInterval problem

Pozdrav,
Molim vas da mi predložite neko rješenje za ovu situaciju. Kod je dosta složen pa ga neću stavljati u originalu nego čisto opisati onako školski.

Na klik nečega pozivam funciju u kojoj radim setInterval. Sljedeći klik ga opet moram postaviti ali napraviti clearInterval za onaj postojeći. Znači ovako nešto:

function notification() {
interval = '';
clearInterval(interval);

interval = setInterval(function() {
	console.log('x');
},5000);
}

Ovaj x se treba ispisati svaki 5s. Ali što više puta kliknem i pozovem funkciju notification, to se x sve brže ispisuje u konzoli, jer postojeći još uvijek radi u pozadini.

Ne mogu ubiti interval prije nego ga pozovem, a opet ako ga ubijem nakon što ga pozovem dobijem kao da ga nisam ni pozvao. Nadam se da je otprilike razumljivo ono što me muči, pa pliz help ako možete.

Varijabla interval ti mora biti definirana izvan funkcije.

var interval;

function notification() {

clearInterval( interval );

interval = setInterval( function() {
console.log( 'x' );
}, 5000 );

}
1 Like

Pa naravno :wink:

Uvijek sve izgleda jednostavno kad pronađeš rješenje, do tad baš i nije tako.

Svaka čast, spasio si me. Hvala puno, pozz!

I u prvom slucaju je interval globalna variabla, nije to problem.
Problem je sto ju pregazis kad joj pridruzis prazan string!?

Yep…
U prvom slučaju radim clearInterval() na iznad definiranu praznu varijablu, pa nema efekta.
Ovako radim clear na postojeću interval varijablu koja izvršava setInterval funkiju i aktivna je u pozadini (unutar funkcije).
Dok ova varijabla izvan funkcije služi samo da ona unutar clearInterval() ne bi bila undefined.