这是代码
var data = JsonConvert.DeserializeObject<RootObject>(json);
为什么clearinterval不会阻止执行setInterval?
答案 0 :(得分:4)
它不适用于某个功能,因为现在只是该机制的设计方式。对setInterval()
的呼叫返回一个号码,该号码充当呼叫建立的定时器的标识符。该数字必须传递给clearInterval()
。
它不会导致错误传递不是数字的内容,或者传递不能识别活动计时器的数字,但调用无效。
在您的情况下,您的t()
功能可以简单地返回setInterval()
调用的结果,而您的外部代码可以保存该代码以供日后使用。
答案 1 :(得分:4)
这是因为您需要返回间隔的ID并清除该ID。
根据文件:
setInterval返回唯一标识的区间ID interval,所以你可以稍后通过调用clearInterval()来删除它。
//function that keeps logging 'hello' on the console
var t = ()=>{
//return the id of the interval
return setInterval(()=>{
console.log('hello')
},1000)
}
//get the id of the interval created by the "t" function
var id = t();
//alerts the id just to see it
alert(id);
//clear it - function will stop executing
clearInterval(id);
&#13;
参考
https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval
答案 2 :(得分:1)
因为你应该在setInterval()的引用上使用clearInterval。
var interval = setInterval();
clearInterval(interval);
答案 3 :(得分:0)
T不等于setInterval返回值,因为您没有从箭头函数返回值,也不会将其赋值给某个值。
请尝试使用此代码段:
var t = ()=>
setInterval(()=>{
console.log('hello')
},1000)
var interval = t();
clearInterval(interval);
答案 4 :(得分:0)
let intervalId = null;
cycle(true);
function cycle(r) {
let myInterval = () => {
return setInterval(() => plusSlides(1), 1000);
}
if (!r) {
clearInterval(intervalId);
} else {
intervalId = myInterval();
}
}