3

所以,我看到了一个奇怪的问题。如果我有一个功能

// counter wraps around to beginning eventually, omitted for clarity.
var counter; 
cycleCharts(chartId) {
    // chartId should be undefined when called from setInterval
    console.log('chartId: ' + chartId);
    if(typeof chartId == 'undefined' || chartId < 0) {
        next = counter++;
    }
    else {
        next = chartId;
    }
    // ... do stuff to display the next chart
}

该函数可以通过用户操作显式调用,在这种情况下chartId作为参数传入,并显示所选图表;或者它可以处于自动播放模式,在这种情况下,它由 a 调用,setInterval并由以下内容初始化:

var cycleId = setInterval(cycleCharts, 10000);

奇怪的是,cycleCharts()即使chartIdsetInterval! setInterval甚至没有任何参数可以传递给函数cycleCharts,所以我很困惑chartId为什么cycleChartssetInterval.

4

3 回答 3

4

setInterval 提供 cycleCharts 实际时间数据(因此可以计算出它运行的实际时间并用于产生不那么生硬的响应,在动画中最实用)

你要

 var cycleId = setInterval(function(){ cycleCharts(); }, 10000); 

(这个行为可能没有标准化,所以不要太依赖它)

于 2008-09-17T18:48:50.033 回答
3

它告诉你回调被调用晚了多少毫秒。

于 2008-09-17T18:53:18.383 回答
1

var cycleId = setInterval(cycleCharts, 10000, 4242);

从第三个参数开始 - 它们被传递到函数中,因此在我的示例中,您将 4242 作为chartId 发送。我知道这可能不是您提出的问题的答案,但它可能是您问题的解决方案?我认为它获得的值只是在传递/调用方法时从堆栈中的任何内容中随机得出的。

于 2008-09-17T18:48:57.397 回答