为什么clearInterval不适用于某个函数

时间:2017-07-21 14:25:13

标签: javascript node.js node.js-connect node.js-client

这是代码

var data = JsonConvert.DeserializeObject<RootObject>(json); 

为什么clearinterval不会阻止执行setInterval?

5 个答案:

答案 0 :(得分:4)

它不适用于某个功能,因为现在只是该机制的设计方式。对setInterval()的呼叫返回一个号码,该号码充当呼叫建立的定时器的标识符。该数字必须传递给clearInterval()

它不会导致错误传递不是数字的内容,或者传递不能识别活动计时器的数字,但调用无效。

在您的情况下,您的t()功能可以简单地返回setInterval()调用的结果,而您的外部代码可以保存该代码以供日后使用。

答案 1 :(得分:4)

这是因为您需要返回间隔的ID并清除该ID。

根据文件:

  

setInterval返回唯一标识的区间ID   interval,所以你可以稍后通过调用clearInterval()来删除它。

&#13;
&#13;
//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;
&#13;
&#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();
        
    }
}