繁体   English   中英

带参数的Javascript setinterval函数

[英]Javascript setinterval function with arguments

如何在setInterval函数中传递参数例如:

 intId = setInterval(waiting(argument), 10000);

它显示错误: useless setInterval call (missing quotes around argument?)

使用匿名函数

 intId = setInterval(function(){waiting(argument)}, 10000);

这将创建一个无参数的匿名函数,该函数使用参数调用waiting()

或者使用setInterval()函数的可选参数:

 intId = setInterval(waiting, 10000, argument [,...more arguments]);

您的代码( intId = setInterval(waiting(argument), 10000); )使用argument调用waiting() ,获取返回值,尝试将其视为函数,并设置该返回值的间隔。 除非waiting()是一个返回另一个函数的函数,否则这将失败,因为您只能将函数视为函数。 数字/字符串/对象不能对函数进行类型转换。

你可以使用Function#bind

intId = setInterval(waiting.bind(window, argument), 10000);

它返回一个函数,该函数将使用给定的上下文( window )和任何可选参数调用目标函数。

使用此方法:

 var interval = setInterval( callback , 500 , arg1 , arg2[, argn ] );
 [...]
 function callback(arg1, arg2[, etc]){
 }

更多信息: window.setInterval

您可以使用bind和apply函数将参数存储在state中。

在节点shell中使用bind的示例:

> var f = function(arg) { console.log (arg);}
> f()
undefined
> f("yo")
yo
> var newarg = "stuff";
> f(newarg)
stuff
> var fn = f.bind(this, newarg);
> fn()
stuff
> var temp = setTimeout(fn,1000)
> stuff

setInterval(function(){funca(10,3);},500);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM