NodeJS设置超时

时间:2012-10-19 09:12:37

标签: javascript node.js javascript-events timer settimeout

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

这将是问题所在,因为我甚至无法正确地将有关setTimout的内容输入console.log。

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

    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

这远非我想要的。

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

1 个答案:

答案 0 :(得分:4)

由于(i)

,您正在setTimeout调用中运行该函数

将其更改为

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

这样你就可以使用参数i

将函数'pointer'传递给setTimeout设置

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