通过在setInterval函数参数
-
19-08-2019 - |
题
请告知如何将参数传递到使用setInterval
调用的函数。
我的例子setInterval(funca(10,3), 500);
不正确。
解决方案
您需要创建一个匿名函数,因此不执行就实际的功能。
setInterval( function() { funca(10,3); }, 500 );
其他提示
它们作为参数添加给setInterval:
setInterval(funca, 500, 10, 3);
在您的问题的语法使用eval,这是不推荐的做法。
可以传递参数(一个或多个)作为功能对象的属性,而不是作为一个参数:
var f = this.someFunction; //use 'this' if called from class
f.parameter1 = obj;
f.parameter2 = this;
f.parameter3 = whatever;
setInterval(f, 1000);
然后在你的功能someFunction
,你将有机会获得的参数。这是特别有用的内部类,其中范围进入到全球空间自动和你失去了那所谓的setInterval开始与类引用。用这种方法,“参数2”,在“someFunction”,在上述的例子中,将具有权利范围。
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
可以使用匿名功能;
setInterval(function() { funca(10,3); },500);
setInterval(function,milliseconds,param1,param2,...)
更新:2018 - 使用 “扩展” 操作符
function repeater(param1, param2, param3){
alert(param1);
alert(param2);
alert(param3);
}
let input = [1,2,3];
setInterval(repeater,3000,...input);
到目前为止,最实用的答案是tvanfosson给出的,所有我能做的就是给你一个更新的版本ES6:
setInterval( ()=>{ funca(10,3); }, 500);
引用的参数应该是足够:
OK --> reloadIntervalID = window.setInterval( "reloadSeries('"+param2Pass+"')" , 5000)
KO --> reloadIntervalID = window.setInterval( "reloadSeries( "+param2Pass+" )" , 5000)
请注意为每个参数的单引号'
。
与IE8,铬和Firefox测试
我知道这个话题是如此古老,但这里是我的关于setInterval
函数传递参数解决方案。
<强> HTML 强>
var fiveMinutes = 60 * 2;
var display = document.querySelector('#timer');
startTimer(fiveMinutes, display);
JavaScript的:
function startTimer(duration, display) {
var timer = duration,
minutes, seconds;
setInterval(function () {
minutes = parseInt(timer / 60, 10);
seconds = parseInt(timer % 60, 10);
minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;
display.textContent = minutes + ":" + seconds;
--timer; // put boolean value for minus values.
}, 1000);
}
这工作setInterval("foo(bar)",int,lang);
.... 乔恩克莱泽使我的答案。
另一解决方案包括通过你的函数一样,(如果你已经有了动态瓦尔): 的setInterval( 'FuncA的行(' + X + ' '+ Y +')',500);
您可以使用一个名为下划线JS库。它详细介绍了绑定方法一个很好的包装,是一种更清洁的语法为好。让你在指定的范围执行该功能。
_。绑定(功能,范围,参数*)
这问题将是使用闭包的一个很好的示范。这个想法是,一个函数使用外部范围的变量。下面是一个例子...
setInterval(makeClosure("Snowden"), 1000)
function makeClosure(name) {
var ret
ret = function(){
console.log("Hello, " + name);
}
return ret;
}
功能“makeClosure”返回另一个函数,该函数可以访问外部范围变量“名称”。所以,基本上,你需要传递任何变量“makeClosure”功能,并在分配给“RET”变函数中使用它们。 Affectingly,setInterval的将执行分配到“退役”的功能。