快速掌握Node.js中setTimeout和setInterval的使用方法

 更新时间:2016年03月21日 16:50:49   作者:小崔的笔记本  
这篇文章主要为大家介绍了快速掌握Node.js中setTimeout和setInterval的使用方法,感兴趣的小伙伴们可以参考一下

Node.js和js一样也有计时器,超时计时器、间隔计时器、及时计时器,它们以及process.nextTick(callback)函数来实现事件调度。今天先学下setTimeout和setInterval的使用。

一、setTimeout超时计时器(和GCD中的after类似)

在node.js中可以使用node.js内置的setTimeout(callback,delayMillSeconds,[args])方法。当调用setTime()时回调函数会在delayMillSeconds后

执行.setTime() 会返回一个定时器对象ID,可以在delayMillSeconds到期前将ID传给clearTimeout(timeoutId)来取消。

function myfunc(){
 console.log("myfunc");
};
var mytimeout=setTimeout(myfunc,1000);
clearTimeout(mytimeout);
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe timer.js

Process finished with exit code 0

如果将clearTimeout(mytimeout);这行注释之后可以看到是会执行myfunc()。

"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe timer.js
myfunc

Process finished with exit code 0

二、setInterval间隔计时器(和GCD中的dispatch_source_t或NSTimer类似)

间隔计时器用来按定期的时间间隔来执行工作.和setTimeout类似,node.js中内置setInterval(callback,delayMilliSecond,[args])来创建并返回定时器对象Id,通过clearInterval()来取消。

/**
 * Created by Administrator on 2016/3/11.
 */
function myfunc(Interval){
 console.log("myfunc "+Interval);
}
var myInterval=setInterval(myfunc,1000,"Interval");
function stopInterval(){
 clearTimeout(myInterval);
 //myInterval.unref();
}
setTimeout(stopInterval,5000);

上面代码是创建setInterval的回调函数myfunc,参数为Interval,setInterval每隔1s执行一次,setTimeout是在5秒之后执行,它的回调函数让间隔计时器取消。

"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe Interval.js
myfunc Interval
myfunc Interval
myfunc Interval
myfunc Interval

Process finished with exit code 0

三、从事件循环中取消定时器引用

当事件队列中仅存在定时器回调函数时,如果不希望再执行它们,可以使用setInterval和setTimeout返回对象的unref()函数来通知事件循环不要继续。

当unref()和setTimeout结合使用,要用独立计时器来唤醒事件循环,大量使用对性能也会产生影响,应尽量少用。

四、setTimeout和setInterval执行时间是不精确的

它们是间隔一定时间将回调添加到事件队列中,执行也不是太精确

function simpleTimeout(consoleTime)
{
 console.timeEnd(consoleTime);
}
console.time("twoSecond");
setTimeout(simpleTimeout,2000,"twoSecond");

console.time("oneSecond");
setTimeout(simpleTimeout,1000,"oneSecond");

console.time("fiveSecond");
setTimeout(simpleTimeout,5000,"fiveSecond");

console.time("50MillSecond");
setTimeout(simpleTimeout,50,"50MillSecond");

以上代码多执行几次输出的结果也是不一样的。

"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe timer.js
50MillSecond: 51ms
oneSecond: 1000ms
twoSecond: 2002ms
fiveSecond: 5001ms

Process finished with exit code 0

以上就是本文的全部内容,希望对大家学习Node.js中setTimeout和setInterval的使用方法有所帮助。

相关文章

  • 快速搭建Node.js(Express)用户注册、登录以及授权的方法

    快速搭建Node.js(Express)用户注册、登录以及授权的方法

    这篇文章主要介绍了快速搭建Node.js(Express)用户注册、登录以及授权,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • express如何使用session与cookie的方法

    express如何使用session与cookie的方法

    本篇文章主要介绍了express如何使用session与cookie的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • 使用node操作SQLite的方法

    使用node操作SQLite的方法

    SQLite是一种轻量级的嵌入式关系型数据库管理系统,它以库的形式存在,可以嵌入到应用程序中,使用Node.js操作SQLite数据库有多种方式,其中常用的方式包括使用sqlite3模块、sequelize模块和knex模块,本文将详细的给大家介绍这几种方式,需要的朋友可以参考下
    2023-10-10
  • 从零学习node.js之详解异步控制工具async(八)

    从零学习node.js之详解异步控制工具async(八)

    sync是一个流程控制工具包,提供了直接而强大的异步功能。基于JavaScript为Node.js设计,同时也可以直接在浏览器中使用。下面这篇文章主要介绍了node.js之异步控制工具async的相关资料,需要的朋友可以参考下。
    2017-02-02
  • Node.js JSON模块用法实例分析

    Node.js JSON模块用法实例分析

    这篇文章主要介绍了Node.js JSON模块用法,结合实例形式分析了node.js json模块的基本语法,以及使用json模块进行json格式数据解析的相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • Node事件的监听与触发的实现

    Node事件的监听与触发的实现

    Node.js是由事件驱动的,每个任务都可以当作一个事件来处理,本文主要介绍了Node事件的监听与触发的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04
  • 如何自定义node版本,实现node多版本控制方式

    如何自定义node版本,实现node多版本控制方式

    这篇文章主要介绍了如何自定义node版本,实现node多版本控制方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • 浅谈如何把Node项目部署到服务器上

    浅谈如何把Node项目部署到服务器上

    本文主要介绍了浅谈如何把Node项目部署到服务器上,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • nodejs一个简单的文件服务器的创建方法

    nodejs一个简单的文件服务器的创建方法

    这篇文章主要介绍了nodejs一个简单的文件服务器的创建方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Node.js基础入门之回调函数及异步与同步详解

    Node.js基础入门之回调函数及异步与同步详解

    Node.js是一个基于Chrome V8引擎的JavaScript运行时。类似于Java中的JRE,.Net中的CLR。本文将详细为大家介绍Node.js中的回调函数及异步与同步,感兴趣的可以了解一下
    2022-03-03

最新评论