是否可以将执行函数的interval id作为参数发送?比如这样的事情:
var id= setInterval(myFunc.bind(null,id),1000);
我要做的是在myFunc
中,如果需要,我想做一些处理和清除间隔。我不能使用全局变量,因为它会多次发生。我知道我可以使用全局数组,但由于我的函数逻辑,它会耗费一点时间。所以我想知道我是否可以将时间间隔id作为参数传递给myFunc
。
编辑: this stackOverfllow link没有帮助我,因为没有有用的答案。
答案 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);