使用循环在js中调用多个setInterval()函数

时间:2017-05-12 02:24:02

标签: javascript setinterval

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

要做到这一点,只需创建另一个将启动间隔的功能

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

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

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

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