4

我正在使用 phidgets 库通过 nodejs 与物理设备进行交互。我已经把它全部物理连接起来了,我想做的就是确保我的开/关时间是准确的。

这将是问题所在,因为我什至无法将有关 setTimout 的内容正确地控制台注销。

本质上,我正在尝试执行以下操作:

for ( var i = 0; i < 4; i++ ) {
    setTimeout( function(i){
        console.log('Input: "' + i + '", Executed with timeout of ' + i*1000 + 'ms');
    }(i), i*1000 );
};

但是我的控制台只是吐出下面的内容,没有超时。这是即时的。

Input: "0", Executed with timeout of 0ms
Input: "1", Executed with timeout of 1000ms
Input: "2", Executed with timeout of 2000ms
Input: "3", Executed with timeout of 3000ms

这与我想要的相差甚远。

关于发生了什么的任何想法?

4

1 回答 1

4

您正在 setTimeout 调用中运行该函数,因为(i)

将其更改为

setTimeout( function(i){
            console.log('Input: "' + i + '", Executed with timeout of ' + i*1000 + 'ms');
        }, i*1000, i );

这样,您将函数“指针”传递到带有参数的 setTimeout 设置中i

PS:时间值之后的所有参数i*1000都将作为参数传递给您的回调函数

于 2012-10-19T09:18:50.043 回答