将 setInterval ID 解析为其参数函数

Parsing setInterval ID's to it's parameter function

我将执行大量的 setIntervals,有一种方法可以提高效率;但那是在路上。

我有办法做到这一点吗?

var a = setInterval(function(a){
    console.log(a);
    clearInterval(a);
}, 1000, a);

所以 ID 被解析到函数本身,这样我就不必存储 ID 来再次清除它了。

这里有两个选择。

递归设置超时:

function doTheJob() {
  console.log("I'm working")
  setTimeout(doTheJob, 1000)
}

将变量 (id) 留在范围内的简单 setinterval:

var id = setInterval(function() {
  console.log("I'm working")

  if( something ) 
    clearInterval(id)   
}, 1000)

您可以编写一个辅助函数来执行此操作:

function interval(f, timeout) {
  const id = setInterval(() => f(id), timeout);
}

interval(a => { console.log(a); clearInterval(a); }, 1000);
var a = [];
a.push(setInterval(function(t){
    console.log(a[t]);
    clearInterval(a[t]);
}, 1000, a.length));

不要那样做。