带参数的 Javascript setinterval 函数

Posted

技术标签:

【中文标题】带参数的 Javascript setinterval 函数【英文标题】:Javascript setinterval function with arguments 【发布时间】:2013-03-14 13:17:55 【问题描述】:

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

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

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

【问题讨论】:

setInterval(function()waiting(argument), 10000) Pass parameters in setInterval function 的可能重复项 【参考方案1】:

使用匿名函数

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

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

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

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

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

【讨论】:

【参考方案2】:

你可以使用Function#bind:

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

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

【讨论】:

【参考方案3】:

使用这个方法:

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

更多信息在这里:window.setInterval

【讨论】:

【参考方案4】:

您可以使用绑定和应用函数将参数存储在状态中。

在节点外壳中使用绑定的示例:

> 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

【讨论】:

【参考方案5】:

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

【讨论】:

This 是您要回答的问题。

以上是关于带参数的 Javascript setinterval 函数的主要内容,如果未能解决你的问题,请参考以下文章

在JavaScript的SetInterval()函数中传递参数

setTimeOut传参数(转)

如何使用定时器settimeout,setInterval执行能传递参数的函数

如何使用定时器settimeout,setInterval执行能传递参数的函数

如何使用定时器settimeout,setInterval执行能传递参数的函数

如何使用定时器settimeout,setInterval执行能传递参数的函数