為什么不stopInterval清除mave?mave保持登錄'g'甚至稱后stopInterval()。
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();
uj5u.com熱心網友回復:
setInterval當呼叫將回傳 a 時timerId,您必須清除該 ID。
id每次間隔運行時,您都不會清除on,您可以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();
uj5u.com熱心網友回復:
這個程式似乎缺少一些東西,唯一設定的間隔是
var mave = setInterval(()//etc
它將“mave”設定為僅在該 if 陳述句的范圍內可見的區域變數,并且在此之后沒有“stopInterval”,您只是在啟動它之前呼叫它
首先,您需要使 mave 成為一個全域變數,或者簡單地將其作為引數傳遞給 stopInterval(但是它與 clear 相同,所以不妨使用它)但主要是,您實際上必須在之后停止它你開始吧
嘗試制作一個在點擊時清除它的按鈕,或任何東西
uj5u.com熱心網友回復:
您沒有提供任何條件來停止/清除該間隔。從一開始,您要做的第一件事就是停止間隔(尚未開始)。然后你開始間隔并且不提供任何東西來阻止它。在 console.log("g") 的位置設定 stopIntervall 命令,在除錯時您會看到不同之處。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/359534.html
標籤:javascript 设置间隔
