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]) } |