发送间隔id作为执行函数

时间:2016-11-26 08:39:24

标签: javascript

是否可以将执行函数的interval id作为参数发送?比如这样的事情:

var id= setInterval(myFunc.bind(null,id),1000);

我要做的是在myFunc中,如果需要,我想做一些处理和清除间隔。我不能使用全局变量,因为它会多次发生。我知道我可以使用全局数组,但由于我的函数逻辑,它会耗费一点时间。所以我想知道我是否可以将时间间隔id作为参数传递给myFunc

编辑: this stackOverfllow link没有帮助我,因为没有有用的答案。

4 个答案:

答案 0 :(得分:0)

您实际上可以尝试混合使用setTimeout和setInterval来完成您要查找的内容。

您可以阅读有关如何将其他参数传递给函数的setInterval的更多信息。



var interval = 0;

function logId(param) {
  interval++;

  if (interval === 3) {
    clearInterval(param);
  }
  console.log(param);

}

var id = setInterval(function() {
  setTimeout(logId, 0, id)
}, 1000);




答案 1 :(得分:0)

您可以创建自己的函数来将回调函数和区间ID存储在同一个对象中,并将该对象传递给interval函数,该函数将使用区间id调用提供的函数。

function setMyInterval(f,t) {

    var handleMyInterval = function(ob) {
        ob.func(ob.id);
    };
    var idOb = {func: f};               
    idOb.id = setInterval(handleMyInterval,t,idOb);     

    return idOb.id  
}

答案 2 :(得分:0)

你可以在你的间隔内使用功能,这样你就可以这样做。

创建一个函数,该函数将执行间隔并在您设置的时间后自行清除。

intervalTime是循环间隔的时间,超时是清除间隔循环的时间。

都以毫秒为单位收到。

function test(intervalTime,Timeout,log){
    var id = setInterval(function(){
         console.log(log)
    },intervalTime);

    setTimeout(function(){
        clearInterval(id);
    }, Timeout);
}

test(1000,10000,'test1');
test(1000,1000,'test2');

答案 3 :(得分:0)

我使用这种模式:

function myFunc(host){
   console.log(host.id);
}

var host = {};
host.id = setInterval(myFunc.bind(null,host),1000);