您现在的位置是:群英 > 开发技术 > web开发
Node.js中的定时器怎样使用,有什么要求
Admin发表于 2022-09-01 17:26:15688 次浏览
今天就跟大家聊聊有关“Node.js中的定时器怎样使用,有什么要求”的内容,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

“node.js”中有定时器;“node.js”中的定时器模块包含了一定时间执行一遍代码的函数,定时器不必通过require()的方式引入,因为所有的方法都是模拟浏览器中JavaScript函数,是全局的;“node.js”中的定时器函数实现了与web浏览器提供的定时器API类似的API。

本文操作环境:Windows10系统、nodejs 12.19.0版、Dell G3电脑。

node.js中有定时器

Node.js 中的定时器

Node.js 中的定时器模块包含了隔一定时间执行一遍代码的函数。定时器不必通过 require() 的方式引入,因为所有这些方法都是模拟浏览器中 JavaScript 函数,是全局的。为了更好的全面理解何时这些函数将执行,阅读 Node.js 中事件轮询是一个好主意。

用 Node.js 控制时间的连续

Node.js 中的 API 函数提供了几种方式,允许代码从现在时间之后的某个时刻开始执行。以下给出的函数看上去很相似,因为它们在大多数浏览器中都可用。但是 Node.js 实际上提供了它自己的实现。定时器与系统非常紧密地结合在一起,尽管这些 API 是浏览器中函数的翻版,但是仍然在实现上有所不同。

timer 用于安排函数在未来某个时间点被调用,Node.js 中的定时器函数实现了与 Web 浏览器提供的定时器 API 类似的 API,但是使用了事件循环实现,Node.js 中有四个相关的方法

setTimeout(callback, delay[, ...args])
setInterval(callback[, ...args])
setImmediate(callback[, ...args])
process.nextTick(callback[, ...args])

示例如下:

setTimeout() 可被用来在一段指定时间之后执行某个代码任务。此函数与浏览器 JavaScript 函数 window.setTimeout() 很相似,但是你不能把一串字符串传入执行。

setTimeout() 接受一个可执行的函数作为其第一个参数,然后有一个毫秒为单位的延时时间作为第二个参数。其余的参数也可纳入其中,作为传给此函数的参数使用。以下是一个例子:

function myFunc(arg) {
  console.log(`arg was => ${arg}`);
}
setTimeout(myFunc, 1500, 'funky');

因为使用了 setTimeout(),以上函数 myFunc() 将在 1500 毫秒(或者1.5秒)左右时执行。

设置的定时间隔不能保证每次都是以 精准 的毫秒间隔数执行代码,这是因为其它阻塞或者正在事件轮询上处理的代码将推迟此定时的执行。唯一 保证的是定时器不会比声明的时间间隔 提早 执行。

setTimeout() 返回一个 Timeout 对象,可通过该对象引用到设置的定时器。这个返回的对象可以被用来取消定时(见下面的 clearTimeout() 部分),同时还可以改变执行行为(见下面的 unref() 部分)。

"在此之后立即执行" setImmediate()

setImmediate() 将在当前事件轮询的末尾处执行。 本代码将在当前事件轮询中的任何 I/O 操作 后,在任何下一轮定时器 前 执行。代码执行可以被认为是“在此之后立即执行”,这意味着任何紧跟着 setImmediate() 函数调用将在 setImmediate() 函数参数前执行。

setImmediate() 的第一个参数是要执行的函数,当执行时,后面的参数将作为参数传入这个函数中。这是一个例子:

console.log('before immediate');
setImmediate((arg) => {
  console.log(`executing immediate: ${arg}`);
}, 'so immediate');
console.log('after immediate');

传入 setImmediate() 的上述函数将在任何可执行的代码执行完后执行,所以输出结果是:

before immediate
after immediate
executing immediate: so immediate

setImmediate() 返回一个 Immediate 对象,它可以被用于取消安排的定时任务(见下面的 clearImmediate() )。

注意:不要把 setImmediate() 和 process.nextTick() 相混淆。它们有一些主要的差别:第一, process.nextTick() 将在任何设置好的 Immediate 以及任何安排好的 I/O 前 执行。第二, process.nextTick() 是不可擦除的,换句话说,一旦有代码使用 process.nextTick() 执行,执行无法中断,这就像一个普通函数一样,具体可以参考此教程来更好地理解 process.nextTick() 的操作。

"永远的轮询" 执行 ~ setInterval()

如果存在一块函数,它需要多次执行,setInterval() 可以派上用场。setInterval() 接受一个函数作为其参数,该函数将被运行无限次,第二个参数便是一个给定的延时毫秒数。就像 setTimeout(),其余参数可以在这之后添加,作为传递给函数调用的参数使用。另外一个和 setTimeout() 类似的地方是延时不保证精确,因为有些操作可能在事件轮询上挂住,因此可以被认为是大致的延时。如以下例子:

function intervalFunc() {
  console.log('Cant stop me now!');
}
setInterval(intervalFunc, 1500);

在上面的例子中,intervalFunc() 每 1500 毫秒执行一次(或每 1.5 秒执行一次),直到它被终止。

就像 setTimeout(),setInterval() 同样返回一个 Timeout 对象,它可以被引用并且改变设定的定时器。


关于“Node.js中的定时器怎样使用,有什么要求”的内容就介绍到这,感谢各位的阅读,相信大家对Node.js中的定时器怎样使用,有什么要求已经有了进一步的了解。大家如果还想学习更多知识,欢迎关注群英网络,小编将为大家输出更多高质量的实用文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: node
相关信息推荐
2022-05-17 17:53:20 
摘要:moment.js是一个轻量级的js时间处理类库,其使用简单,方便了日常开发中对时间的操作,提高了开发效率。引用moment.jsnpm install moment常用的方法1、moment()获取
2022-04-29 12:03:15 
摘要:给大家带来一篇关于JS实现页面缩放兼容性处理方法的相关教程文章,内容涉及到JS、页面缩放、兼容性、页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)等相关内容,更多关于页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)的内容希望能够帮助到大家。
2022-05-19 17:42:37 
摘要:go语言有框架,例如:Beego(Go语言下开源的,高性能Web框架 )、Buffalo(Go语言下快速Web开发框架)、Echo、Gin、Iris、Revel(高生产率,全栈Go语言的Web框架)等。
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部