THIS IS NOT A DUPLICATE!
I have a piece of JavaScript with what I call a "nested" setInterval; one setInterval that calls a function with another setInterval.
What i want is when the "outer" setInterval calls the function when the "inner" setInterval is already running, I want the "inner" setInterval to stop it's original interval and start again fresh.
So:
- Outer
setIntervalfires. - Outer
setIntervalcalls function with innersetInterval. - Inner
setIntervalfires.
... inner runs for a while
- Outer
setIntervalfires ... again. - Outer
setIntervalcalls innersetInterval... again - Inner
setIntervalstops it's original run. - Inner
setIntervalstarts a fresh, new run.
See my example below:
<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
div {
margin: 100px 100px;
}
</style>
<script type="text/javascript">
let alphabet = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
function start(){
var the_button = document.getElementById('the_button');
the_button.addEventListener('click', testFunction);
}
function testFunction(){
console.log("Starting ...");
if(myIntervalVal) clearInterval(myIntervalVal);
var myIntervalVal = setInterval(printAlphabet, 10000);
}
function printAlphabet(){
var i = 0;
console.log(alphabet[i]);
if(mySubInterval) clearInterval(mySubInterval);
var mySubInterval = setInterval(function(){
i++;
if(i === alphabet.length) i = 0;
console.log(alphabet[i]);
}, 1000);
}
</script>
</head>
<body onload="start();"><div><button type="button" id="the_button">click me</button></div></body>
</html>
The way I feel this should work is:
outer fires
inner prints
A
B
C
D
E
F
outer is fired again
inner stops printing
inner prints
A
B
C
D
E
F
...
Is this not possible?