【第2章 Node.js基础】2.5 Node.js 的定时器

定时器timers 模块对外暴露一个全局的API用于调度在某个时段调用的函数因为定时器函数是全局变量,所以不需要加载timers 模块来使用它。Node.s 的定时器函敬实现了与 Web 浏览器提供的定时器 API 类似的 AP,但是它们使用了不同的内部实现机制,Nodeis 的定时器函数是基于 Node.s 事件循环构建的。

设置定时器

Node.js 中的定时器在一段时间后会调用给定的函数。何时调用定时器函数取决于用来创建定时器的方法及Node.is 事件循环正在执行的其他工作。

1, 一次性定时器

基本用法:

javascript 复制代码
setTimeout(callback,delay[,...argsl)

这个方法用于延迟一个函数的执行时间,在到达指定的时间点执行该函数,并且只执行一次。其中参数 callback 用于指定要调用的回调函数,delay 设置调用回调函数之前等待的毫秒数,args 设置调用回调函数时传入的可选参数。它返回 Timeout 对象的ID,该D 可以传递给 clearTimeOut0)以取消该定时器。例如,下面的代码将在 1秒后输出提示信息,之后定时器就不再起作用。

javascript 复制代码
setTimeout(function()
	console.log('我是一个一次性的定时器');
},1000);

定时器可能不会精确地在指定的时刻调用回调函数。Node.js 不保证回调被触发的确切时间,也不保证它们的顺序。回调函数会尽可能接近指定的时间,并在该时间点被调用。

2.周期性定时器

基本用法:

javascript 复制代码
setInterval(callback, delay[,...argsl)

这个方法用于以指定的时间间隔周期性地执行回调函数,其参数和返回值同上述 setTimeout0)方法的参数和返回值。

例如,下面的代码将在 1 秒之后输出提示信息,之后定时器每隔 1 秒就重复输出提示信息,除非使用clearlnterval( )方法取消该定时器,或者终止程序。

javascript 复制代码
setInterval (function(){
	console.log('我是一个周期性的定时器');
},1000);

3.即时定时器基本用法:

javascript 复制代码
setImmediate(callback[, ...args])

这个方法用于在 I/O 事件的回调之后立即执行回调函数,其比上述 setTimeout0方法少了一个 delay参数,返回的是Immediate 对象。

这是一个即时定时器,该方法并不会立即执行回调函数,而是在事件轮询之后执行函数,为了防止轮询阻塞,在每轮循环中仅执行链表中的一个回调函数。当程序多次调用 setlmmediate0)方法时,由该参数指定的回调函数将按照创建它们的顺序排队等待执行。每次事件循环迭代都会处理整个回调队列。如果即时定时器通过正在执行的回调加入队列,则要等到下一次事件循环迭代时才会被触发。

相关推荐
q***518939 分钟前
Node.js实现WebSocket教程
websocket·网络协议·node.js
TG:@yunlaoda360 云老大2 小时前
怎么在亚马逊云服务器上部署Node.js?
运维·服务器·node.js·aws
笑醉踏歌行8 小时前
NVM 在安装老版本 Node环境时,无法安装 NPM的问题
前端·npm·node.js
q***9948 小时前
node.js+npm的环境配置以及添加镜像(保姆级教程)
arcgis·npm·node.js
abiao19818 小时前
npm WARN ERESOLVE overriding peer dependency
前端·npm·node.js
TechExplorer3659 小时前
禁用 npm 更新检查
前端·npm·node.js
shimh_凉茶15 小时前
webpack+vue2打包分析视图插件 webpack-bundle-analyzer
前端·webpack·node.js
越努力越幸运50818 小时前
npm常见问题解决
前端·npm·node.js
by__csdn18 小时前
Electron+Vite:实现electron + vue3 + ts + pinia + vite高效跨平台开发指南
前端·javascript·vue.js·typescript·electron·node.js·vue
q***428219 小时前
node.js内置模块之---crypto 模块
node.js