为什么 setInterval 不清除?
Why isn't setInterval clearing?
为什么 stopInterval
不清除 mave
? mave
即使在调用 stopInterval()
.
后仍保持记录 'g'
let boy = 'bama';
let count = 1;
const name = () => {
let stopInterval = () => {
if (count >= 1) {
clearInterval(mave);
}
}
if (boy === 'lama') {
stopInterval();
var move = setInterval(() => {
console.log('u');
},3000);
} else if (boy === 'bama') {
stopInterval();
var mave = setInterval(() => {
console.log('g');
},3000);
}
};
name();
您没有提供任何条件来停止/清除该间隔。
从一开始,您要做的第一件事就是停止间歇(尚未开始)。
然后你开始间隔并且不提供任何东西来阻止它。
在 console.log("g") 的位置设置 stopIntervall 命令,在调试时您会看到差异。
setInterval
when invokes will return a timerId
, You have to clear that Id.
你不是在每次间隔 运行 时清除 id
,你可以在你已经通过的每个 运行 回调上调用函数 stopInterval
至 setInterval
let boy = "bama";
let count = 1;
const name = () => {
let id; //change - create id variable on top of function
let stopInterval = () => {
if (count >= 1) {
clearInterval(id);
}
};
if (boy === "lama") {
id = setInterval(() => { //change - Assigning ID
stopInterval(); //change - Run every time and check
console.log("u");
}, 3000);
} else if (boy === "bama") {
id = setInterval(() => { //change - Assigning ID
stopInterval(); //change - Run every time and check
console.log("g");
}, 3000);
}
};
name();
Alternate short solution
let boy = "bama";
let count = 1;
const name = () => {
var timerId = setInterval(() => {
if (count++ >= 3) clearInterval(timerId);
if (boy === "lama") console.log("u");
else console.log("g");
}, 3000);
};
name();
这个程序似乎少了点什么,唯一设置的间隔是
var mave = setInterval(()//etc
它将“mave”设置为仅在该 if 语句的范围内可见的局部变量,之后就没有“stopInterval”了,您只能在启动它之前调用它
首先,您需要使 mave 成为一个全局变量,或者只是将其作为参数传递给 stopInterval(但这样一来它就很清楚了,所以不妨使用它)但主要是,您实际上启动后必须停止它
尝试只制作一个按钮,在单击时清除它,或其他任何东西
为什么 stopInterval
不清除 mave
? mave
即使在调用 stopInterval()
.
'g'
let boy = 'bama';
let count = 1;
const name = () => {
let stopInterval = () => {
if (count >= 1) {
clearInterval(mave);
}
}
if (boy === 'lama') {
stopInterval();
var move = setInterval(() => {
console.log('u');
},3000);
} else if (boy === 'bama') {
stopInterval();
var mave = setInterval(() => {
console.log('g');
},3000);
}
};
name();
您没有提供任何条件来停止/清除该间隔。 从一开始,您要做的第一件事就是停止间歇(尚未开始)。 然后你开始间隔并且不提供任何东西来阻止它。 在 console.log("g") 的位置设置 stopIntervall 命令,在调试时您会看到差异。
setInterval
when invokes will return a timerId
, You have to clear that Id.
你不是在每次间隔 运行 时清除 id
,你可以在你已经通过的每个 运行 回调上调用函数 stopInterval
至 setInterval
let boy = "bama";
let count = 1;
const name = () => {
let id; //change - create id variable on top of function
let stopInterval = () => {
if (count >= 1) {
clearInterval(id);
}
};
if (boy === "lama") {
id = setInterval(() => { //change - Assigning ID
stopInterval(); //change - Run every time and check
console.log("u");
}, 3000);
} else if (boy === "bama") {
id = setInterval(() => { //change - Assigning ID
stopInterval(); //change - Run every time and check
console.log("g");
}, 3000);
}
};
name();
Alternate short solution
let boy = "bama";
let count = 1;
const name = () => {
var timerId = setInterval(() => {
if (count++ >= 3) clearInterval(timerId);
if (boy === "lama") console.log("u");
else console.log("g");
}, 3000);
};
name();
这个程序似乎少了点什么,唯一设置的间隔是
var mave = setInterval(()//etc
它将“mave”设置为仅在该 if 语句的范围内可见的局部变量,之后就没有“stopInterval”了,您只能在启动它之前调用它
首先,您需要使 mave 成为一个全局变量,或者只是将其作为参数传递给 stopInterval(但这样一来它就很清楚了,所以不妨使用它)但主要是,您实际上启动后必须停止它
尝试只制作一个按钮,在单击时清除它,或其他任何东西