这不是重复的!
我有一段 JavaScript,我称之为“嵌套” setInterval;一个setInterval调用另一个函数的函数setInterval。
我想要的是当“内部”已经运行时“外部”setInterval调用该函数时,我希望“内部”停止它的原始间隔并重新开始。setIntervalsetInterval
所以:
- 外
setInterval火。 - 外部
setInterval调用函数与内部setInterval。 - 内
setInterval火。
...内部运行一段时间
- 外部
setInterval火灾......再次。 - 外部
setInterval调用内部setInterval......再次 - 内部
setInterval停止它的原始运行。 - Inner
setInterval开始了全新的运行。
请参阅下面的示例:
<!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>
我觉得这应该起作用的方式是:
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
...
这不可能吗?