请告知如何将参数传递给名为 using 的函数setInterval
。
我的例子setInterval(funca(10,3), 500);
不正确。
请告知如何将参数传递给名为 using 的函数setInterval
。
我的例子setInterval(funca(10,3), 500);
不正确。
您需要创建一个匿名函数,以便不会立即执行实际函数。
setInterval( function() { funca(10,3); }, 500 );
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
您可以将参数作为函数对象的属性传递,而不是作为参数:
var f = this.someFunction; //use 'this' if called from class
f.parameter1 = obj;
f.parameter2 = this;
f.parameter3 = whatever;
setInterval(f, 1000);
然后在您的函数someFunction
中,您将可以访问参数。这在范围自动转到全局空间的类中特别有用,并且您会丢失对调用 setInterval 的类的引用。使用这种方法,上例中“someFunction”中的“parameter2”将具有正确的范围。
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);
您可以使用匿名函数;
setInterval(function() { funca(10,3); },500);
到目前为止,最实用的答案是 tvanfosson 给出的答案,我所能做的就是给你一个 ES6 的更新版本:
setInterval( ()=>{ funca(10,3); }, 500);
引用论点就足够了:
OK --> reloadIntervalID = window.setInterval( "reloadSeries('"+param2Pass+"')" , 5000)
KO --> reloadIntervalID = window.setInterval( "reloadSeries( "+param2Pass+" )" , 5000)
注意每个参数的单引号'
。
通过 IE8、Chrome 和 FireFox 测试
const designated = "1 jan 2021"
function countdown(designated_time){
const currentTime = new Date();
const future_time = new Date(designated_time);
console.log(future_time - currentTime);
}
countdown(designated);
setInterval(countdown, 1000, designated);
有很多方法可以做到这一点,我个人认为这是干净和甜蜜的。
这个答案的最佳解决方案是下一个代码块:
setInterval(() => yourFunction(param1, param2), 1000);
我知道这个话题太老了,但这是我关于在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);
.... Jon Kleiser引导我找到答案。
另一个解决方案包括像这样传递你的函数(如果你有动态变量): setInterval('funca('+x+','+y+')',500);
您可以使用名为 underscore js 的库。它为 bind 方法提供了一个很好的包装,并且语法也更简洁。让您在指定范围内执行函数。
_.bind(函数,范围,*参数)
这个问题将是使用闭包的一个很好的演示。这个想法是函数使用外部范围的变量。这是一个例子......
setInterval(makeClosure("Snowden"), 1000)
function makeClosure(name) {
var ret
ret = function(){
console.log("Hello, " + name);
}
return ret;
}
函数“makeClosure”返回另一个函数,该函数可以访问外部范围变量“name”。因此,基本上,您需要将任何变量传递给“makeClosure”函数,并在分配给“ret”变量的函数中使用它们。有影响地,setInterval 将执行分配给“ret”的函数。
我对 Vue 应用程序也有同样的问题。在我的情况下,这个解决方案只有在匿名函数被声明为箭头函数时才有效,关于mounted ()
生命圈钩子的声明。
此外,在 IE Support > 9 的情况下,您可以传递更多变量内部设置间隔,您的函数将采用这些间隔。例如:
function myFunc(arg1, arg2){};
setInterval(myFunc, 500, arg1, arg2);
问候!