Rak*_*esh 308 javascript parameters setinterval
请告知如何将参数传递给一个名为using的函数setInterval.
我的例子setInterval(funca(10,3), 500);不正确.
tva*_*son 522
您需要创建一个匿名函数,以便不立即执行实际的功能.
setInterval( function() { funca(10,3); }, 500 );
Run Code Online (Sandbox Code Playgroud)
sbr*_*sbr 74
现在用ES5,bind方法函数原型:
setInterval(funca.bind(null,10,3),500);
Run Code Online (Sandbox Code Playgroud)
Kev*_*Kev 57
将它们作为参数添加到setInterval:
setInterval(funca, 500, 10, 3);
Run Code Online (Sandbox Code Playgroud)
您的问题中的语法使用eval,这不是推荐的做法.
Jua*_*uan 31
您可以将参数作为函数对象的属性传递,而不是作为参数传递:
var f = this.someFunction; //use 'this' if called from class
f.parameter1 = obj;
f.parameter2 = this;
f.parameter3 = whatever;
setInterval(f, 1000);
Run Code Online (Sandbox Code Playgroud)
然后在您的函数中someFunction,您将可以访问参数.这在范围自动转到全局空间的类中尤其有用,并且您将失去对以setInterval开头的类的引用.使用这种方法,在上面的例子中,"someFunction"中的"parameter2"将具有正确的范围.
man*_*nas 18
setInterval(function(a,b,c){
console.log(a + b +c);
}, 500, 1,2,3);
//note the console will print 6
//here we are passing 1,2,3 for a,b,c arguments
// tested in node v 8.11 and chrome 69
Run Code Online (Sandbox Code Playgroud)
Sim*_*mon 17
您可以使用匿名函数;
setInterval(function() { funca(10,3); },500);
Run Code Online (Sandbox Code Playgroud)
swo*_*ger 17
setInterval(function,milliseconds,param1,param2,...)
Run Code Online (Sandbox Code Playgroud)
更新:2018年 - 使用"传播"运算符
function repeater(param1, param2, param3){
alert(param1);
alert(param2);
alert(param3);
}
let input = [1,2,3];
setInterval(repeater,3000,...input);Run Code Online (Sandbox Code Playgroud)
A.r*_*uez 11
到目前为止,最实用的答案是tvanfosson给出的答案,我能做的就是给你一个ES6的更新版本:
setInterval( ()=>{ funca(10,3); }, 500);
Run Code Online (Sandbox Code Playgroud)
这个答案的最佳解决方案是下一个代码块:
setInterval(() => yourFunction(param1, param2), 1000);
Run Code Online (Sandbox Code Playgroud)
小智 6
引用参数应该足够了:
OK --> reloadIntervalID = window.setInterval( "reloadSeries('"+param2Pass+"')" , 5000)
KO --> reloadIntervalID = window.setInterval( "reloadSeries( "+param2Pass+" )" , 5000)
Run Code Online (Sandbox Code Playgroud)
请注意'每个参数的单引号.
使用IE8,Chrome和FireFox进行测试