`
未雨绸缪
  • 浏览: 215694 次
  • 性别: Icon_minigender_1
  • 来自: 陕西
社区版块
存档分类
最新评论

为setInterval传参数

阅读更多

在使用JScript的时候,我们有时需要间隔的执行一个方法,比如用来产生网页UI动画特效啥的。这是我们常常会使用方法setInterval 或setTimeout,但是由于这两个方法是由脚本宿主模拟出来的Timer线程,在通过其调用我们的方法是不能为其传递参数。

    我们常用的使用场景是:

window.setTimeout( " delayRun() " , n);
window.setInterval(
" intervalRun() " , n);

 

window.setTimeout(delayRun, n);
window.setInterval(intervalRun, n);


    显然强行代参数的调用:

window.setTimeout( " delayRun(param) " , n);
window.setInterval(
" intervalRun(param) " , n);

 

window.setTimeout(delayRun(param), n);
window.setInterval(intervalRun(param), n);


    都是错误的,因为string literals形式的方法调用,param必须是全局变量(即window对象上的变量)才行;而function pointer形式的调用,完全错误了,这是把函数的返回值当成了setTimeout/setInterval函数的参数了,完全不是我们所望的事情

    解决这个问题的办法可以使用匿名函数包装的方式,在以下scenario中我们这么做:

function  foo()
{
    
var  param  =   100 ;
    window.setInterval(
function ()
    
{
        intervalRun(param);
    }
888 );
}


function  interalRun(times)
{
    
//  todo: depend on times parameter
}


    这样一来,就可以不再依赖于全局变量向delayRun/intervalRun函数中传递参数,毕竟当页面中的全局变量多了以后,会给脚本的开发、调试和管理等带来极大的puzzle。


 

分享到:
评论
1 楼 aigofly 2014-06-29  
写的很棒,解决了一个我纠结几天的问题。

相关推荐

    setInterval

    这个时间间隔通常以毫秒为单位。`setInterval`是JavaScript定时器API的一部分,用于实现定时任务,比如周期性地更新页面内容、轮询服务器数据等。在这篇博客中,我们将深入探讨`setInterval`的工作原理、常见用法...

    JavaScript中setTimeout和setInterval函数的传参及调用

    JavaScript是一种广泛使用的脚本语言,它能够为网页添加动态功能和交互性。在JavaScript编程中,我们经常需要处理时间延迟或周期性任务执行的需求,这时会用到setTimeout和setInterval这两个全局函数。 setTimeout...

    Javascript定时器(二)——setTimeout与setInterval

    这里的`function`是要执行的函数,`delay`是等待的时间(以毫秒为单位),`param1, param2, ...`是传递给该函数的参数。例如,我们可以创建一个简单的延时提示框: ```javascript setTimeout(function() { alert('...

    动态时钟,利用setInterval

    - `param1, param2, ...`(可选):如果函数需要参数,可以在这里传递。 当你调用`setInterval`时,它会立即返回一个唯一的`interval ID`,这个ID可以用于通过`clearInterval`函数取消定时器。 让我们来看一个简单...

    window.clearInterval与window.setInterval的用法.

    ### window.clearInterval与window.setInterval的用法 在前端开发中,经常需要用到定时器来实现某些功能,例如计时器、轮播图等。而`window.setInterval`和`window.clearInterval`是JavaScript中用于处理定时任务的...

    关于JS定时器(setTimeout setInterval)定时不准问题1

    setTimeout函数的第二个参数(延时时间)只是告诉JavaScript再过多长时间把当前任务添加到队列中。如果队列是空的,那么添加的代码会立即执行;如果队列不是空的,那么它就要等前面的代码执行完了以后再执行。因此,...

    Js动画效果-setInterval(function,time)的主要应用

    首先,`setInterval()`的基本语法是`setInterval(function, time)`,其中`function`是你想要周期性执行的函数,而`time`参数是以毫秒为单位的时间间隔,表示两次调用函数之间的时间。 1. **动画基础**: 动画效果...

    关于setInterval定时器的使用示例

    `setInterval`接收两个参数:一个是要执行的函数或字符串(代表要执行的代码),另一个是执行间隔的时间(以毫秒为单位)。这个函数会按照指定的时间间隔重复调用提供的函数,直到 clearInterval 被调用来停止它。...

    setInterval使用 每隔一定时间执行操作

    其中,`function` 参数是需要定期执行的函数,而 `delay` 参数是以毫秒为单位指定的时间间隔。例如,我们想每隔1秒钟打印"Hello, World!",可以这样写: ```javascript setInterval(function() { console.log('...

    Javascript中, setTimeout() 和 setInterval() 的方法

    与`setTimeout()`类似,`setInterval()`的第二个参数也是一个延迟时间,但区别在于它会每隔这个时间重复执行提供的函数。这也意味着,如果执行函数本身需要的时间超过设定的延迟,可能会出现函数调用的重叠。 考虑...

    setInterval全面的介绍

    `setInterval`还支持更高级的用法,例如传递对象和方法名作为参数,这种方式更加灵活,可以实现更为复杂的逻辑: ```javascript var myObj = { update: function() { console.log("定时更新"); } }; // 使用...

    JS中setInterval、setTimeout不能传递带参数的函数的解决方案

    在JS中无论是setTimeout还是setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数, 这就需要想方法解决。 一、采用字符串形式:——(缺陷)参数不能被周期性改变 setInterval(“foo(id...

    超级简单利用setInterval设置定时自动跳转的例子

    它的基本语法是`setInterval(function, delay)`, 其中`function`是你希望定时执行的函数,而`delay`则是该函数执行的间隔时间,单位为毫秒。例如,如果你想每5秒钟执行一次某个操作,可以这样写: ```javascript ...

    仅IE不支持setTimeout/setInterval函数的第三个以上参数

    然而,在非IE浏览器中,`setTimeout` 和 `setInterval` 支持传递额外的参数,这些参数将会在回调函数内部作为局部变量使用。例如: ```javascript setTimeout(function(obj) { alert(obj.a); }, 2000, {a:1}); ```...

    Java Script中setinterval怎么用?怎么才能让setinterval停下来?.pdf

    在这个例子中,当用户点击ID为`stopButton`的按钮时,`setInterval`会停止,并且控制台会输出“Timer stopped”。 ### 实际应用场景 #### 动画效果 `setInterval`经常用于创建平滑的动画效果。例如,我们可以用它...

    定时器(setTimeout/setInterval)调用带参函数失效解决方法

    setInterval(code,millisec[,”lang”]) setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。 参数 描述 code 必需,要调用的函数或要执行的代码串。 millisec 必需,周期性执行或调用...

    setInterval定时调用ajax实现在线人数统计-你得到了正确的数据那才是你会了,-

    `setInterval(func, delay)`函数接受两个参数:一个是需要周期性执行的函数`func`,另一个是延迟时间`delay`(以毫秒为单位)。例如,如果你设置`setInterval(myFunction, 5000)`,那么`myFunction`将会每5秒钟执行...

    JavaScript中setTimeout和setInterval函数的传参及调用_.docx

    setInterval 函数用于在指定的时间点重复执行某个函数,语法格式为 `setInterval(func, delay, [arg1, arg2, ...])`,其中 `func` 是要执行的函数,`delay` 是延迟的时间,`arg1, arg2, ...` 是要传递给函数的参数。...

    JS中的setTimeout和setInterval的区别JS中的setTimeout和setInterval的区别

    ### JS中的setTimeout与setInterval的区别 在JavaScript编程中,`setTimeout`与`setInterval`是两个非常常用的函数,用于控制代码执行的时间间隔。虽然它们在功能上有一定的相似性,但其实现的效果却大不相同。下面...

Global site tag (gtag.js) - Google Analytics