关于javascript:使用循环在js中调用多个setInterval()函数

calling multiple setInterval() functions in js with a loop

本问题已经有最佳答案,请猛点这里访问。

我是javascript的新手,我在使用setInterval()函数时遇到了麻烦。

基本上我想以不同的给定间隔为不同的参数调用一个函数,我在列表中都有这些参数。

我有一个名为myfunction的函数。 我有一个名为myparam的列表,其中包含我想要传递此函数的所有变量。 最后我有一个名为myfrequency的列表,这是我在每次myfunction调用和myparam中给出的参数之间想要的毫秒时间。 我正在尝试这样的东西,但它不起作用:

1
2
3
for(i=0;i<myparam.length();i++;){
    setInterval(function(){myfunction(myparam[i]);},myfrequency[i]);
    }

上面代码的结果是它只适用于最后一个索引。 myfunction以正确的间隔调用,只有myparam中的最后一个值才能使用正确的参数。

为什么会这样? 我认为setInterval()以不正确的间隔设置函数调用吗?


好吧,因为setInterval有一个延迟,这意味着间隔运行
循环已经完成

要做到这一点,只需创建另一个将开始你的间隔的功能

1
2
3
4
5
function StartInterval(index, frequency) {
    setInterval(function(){
        myfunction(index);
    },frequency);
}

然后在你的循环中调用这个函数并传递一些东西

1
2
3
for(i=0;i<myparam.length;i++){
    StartInterval(myparam[i], myfrequency[i])
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/** set what value you want **/
var myparam = [10,20,30];
var myfrequency = [1000,2000,3000];


function myfunction(index) {
  console.log(index);
}

function StartInterval(index, frequency) {
  setInterval(function(){
    myfunction(index);
  },frequency);
}

for(i=0;i<myparam.length;i++){
  StartInterval(myparam[i], myfrequency[i])
}