【第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_Q5110082859 小时前
python+uniapp基于微信小程序团购系统
spring boot·python·微信小程序·django·uni-app·node.js·php
云枫晖13 小时前
深入浅出npm:现代JavaScript项目基石
前端·javascript·node.js
Q_Q196328847517 小时前
python+vue的在线租房 房屋租赁系统
开发语言·vue.js·spring boot·python·django·flask·node.js
不会写DN18 小时前
用户头像文件存储功能是如何实现的?
java·linux·后端·golang·node.js·github
前端双越老师20 小时前
译: 构建高效 AI Agent 智能体
前端·node.js·agent
哆啦A梦15881 天前
搜索页面布局
前端·vue.js·node.js
Q_Q5110082851 天前
python+uniapp基于微信小程序的旅游信息系统
spring boot·python·微信小程序·django·flask·uni-app·node.js
哆啦A梦15881 天前
axios 的二次封装
前端·vue.js·node.js
Q_Q5110082851 天前
python基于web的汽车班车车票管理系统/火车票预订系统/高铁预定系统 可在线选座
spring boot·python·django·flask·node.js·汽车·php
浪裡遊1 天前
Nivo图表库全面指南:配置与用法详解
前端·javascript·react.js·node.js·php