Nodejs定时器函数中如何使用回调函数

Nodejs定时器函数中如何使用回调函数

setInterval( fnTime(function(hour,minute,second){ console.log(hour+":"+minute+":"+second); }), 1000 );

function fnTime(callback){ var date = new Date(); var hour = date.getHours(); var minute = date.getMinutes(); var second = date.getSeconds(); callback(hour,minute,second); }

这样貌似是不行的,小弟初学请大侠们指点,谢谢


5 回复

当然可以。在 Node.js 中,setInterval 是一个非常有用的定时器函数,它允许我们每隔一段时间执行一次指定的函数。在你的例子中,你想要每秒获取当前时间并打印出来。我们可以利用 setInterval 和回调函数来实现这一点。

首先,让我们理解一下问题所在。在你的代码中,setInterval 的第一个参数需要是一个函数引用或一个匿名函数,而不是立即执行的结果。因此,你需要传递一个函数给 setInterval,而不是立即调用 fnTime 函数。

下面是修改后的代码:

// 定义一个函数,用于获取当前时间并传递给回调函数
function getCurrentTime(callback) {
    const date = new Date();
    const hour = date.getHours();
    const minute = date.getMinutes();
    const second = date.getSeconds();
    callback(hour, minute, second);
}

// 使用 setInterval 每隔一秒调用 getCurrentTime 函数
setInterval(() => {
    getCurrentTime((hour, minute, second) => {
        console.log(`${hour}:${minute}:${second}`);
    });
}, 1000);

在这个示例中,我们定义了一个 getCurrentTime 函数,该函数接收一个回调函数作为参数,并将当前时间(小时、分钟、秒)传递给该回调函数。然后我们使用 setInterval 来每秒调用这个函数。

通过这种方式,你可以确保每次调用 getCurrentTime 函数时,都会得到最新的时间,并且可以正确地打印出来。

希望这能解决你的问题!如果你有任何其他疑问,请随时提问。


setInterval( fnTime(function(hour,minute,second){ console.log(hour+":"+minute+":"+second); }), 1000 ); setInterval执行字符串或一个回调函数,这里的fnTime是执行调用,会把fnTime的返回结果放在setInterval当成字符串运行,由于fnTime没有return,所以返回的是undefined 要是在function fnTime(callback){ }最后面加上return ‘console.log(“结果”)’;, 就会发现一直在打印“结果”

回调后还要根据结果,继续操作呢

setInterval(function(){
    fnTime(function(hour,minute,second){
        console.log(hour+":"+minute+":"+second);
    });
},
    1000
);

function fnTime(callback){
    var date = new Date();
    var hour = date.getHours();
    var minute = date.getMinutes();
    var second = date.getSeconds();
    callback&&callback(hour,minute,second);
}

在Node.js中,setInterval 函数可以用于定期执行某些任务。但是你在代码中使用 setInterval 的方式有误。setInterval 接受一个函数作为第一个参数,并且这个函数会在指定的时间间隔内被调用。在你的例子中,你需要确保传递给 setInterval 的函数是可调用的。

下面是正确的实现方式:

function fnTime(callback) {
    var date = new Date();
    var hour = date.getHours();
    var minute = date.getMinutes();
    var second = date.getSeconds();
    callback(hour, minute, second);
}

function printTime(hour, minute, second) {
    console.log(hour + ":" + minute + ":" + second);
}

// 正确地使用 setInterval
setInterval(() => {
    fnTime(printTime);
}, 1000);

解释

  1. fnTime 函数:此函数获取当前时间并调用传入的回调函数 callback
  2. printTime 函数:这是一个简单的回调函数,用于打印时间。
  3. setInterval 使用:我们创建了一个箭头函数 ( ) => { ... } 作为 setInterval 的第一个参数。在这个箭头函数内部,我们调用了 fnTime 并传入了 printTime 作为回调。setInterval 会每隔一秒钟(即 1000 毫秒)调用这个箭头函数一次,从而每秒打印一次时间。

这种方式保证了 fnTime 函数在 setInterval 的每次调用中都能正常工作,并且每次都会更新并打印当前的时间。

回到顶部