node.js中有定时器吗

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

node.js中有定时器吗

本文操作环境: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 immediateafter immediateexecuting 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 对象,它可以被引用并且改变设定的定时器。

推荐学习:《nodejs视频教程》

以上就是node.js中有定时器吗的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2632553.html

(0)
上一篇 2025年3月7日 04:11:38
下一篇 2025年2月23日 19:34:13

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • node版本14与10的区别是什么

    node版本14与10的区别:1、10版本停止使用Chromium中的V8引擎,使用V8的6.6版本,而14版本使用的V8升级到了8.1版本;2、14版本可以直接使用“ES Modules”并且不会报警,而10版本中则不能使用。 本文操作环…

    2025年3月7日
    200
  • node中什么是全局包

    在node中,全局包指的是在项目中用于安装本地包的工具包,例如nrm、yarn、cnpm等;软件包是包含在程序中的库,必须在使用软件包的每个项目中安装本地包,并且全局包只需要安装在一个位置,可以使用-g或–global选项命令n…

    2025年3月7日
    200
  • reactjs只能在node中运行吗

    reactjs不是只能在node中运行;是一个用于构建用户界面的JavaScript库,在开发模式下Create react应用程序运行NodeJs和Webpack开发服务器,但是如果不在服务器端渲染,则reactjs只是一个前端的框架,配…

    2025年3月7日
    200
  • npm和node.js有什么关系吗

    npm的中文意思为“node包管理器”,是Node.js平台的默认包管理工具,会随着Nodejs一起安装,npm管理对应node.js的第三方插件;通过npm可以安装、共享、分发代码,管理node项目依赖关系。 本教程操作环境:window…

    2025年3月7日
    200
  • node的全局对象是哪个

    node的全局对象是“global”,global最根本的作用是作为全局变量的宿主;而所有全局变量(除了global本身以外)都是global对象的属性。在Node.js中可以直接访问到global的属性,而不需要在应用中包含它。 本教程操…

    2025年3月7日
    200
  • node的异步机制是基于什么

    node的异步机制是基于“事件”的,所有的I/O、网络通信、数据库查询都以非阻塞的方式执行,返回结果由事件循环来处理。Node在同一时刻只会处理一个事件,完成后立即进入事件循环检查后面事件。这样CPU和内存在同一时间集中处理一件事,同时尽量…

    2025年3月7日
    200
  • 火了!新的JavaScript运行时:Bun,性能完爆Node

    今天跟大家介绍一个最新开源的 javascript 运行时:bun.js。比 node.js 快三倍,新 javascript 运行时 bun 火了! 近日,前端工具链 Bun 项目的关注度颇高。Bun 是像 Node 或 Deno 一样的…

    2025年3月7日
    200
  • node.js get与post的区别是什么

    区别:1、GET请求传参通过URL,而POST请求传参通过HTTP上行报文;2、POST请求的安全性比GET请求高,GET请求的参数在URL中,是可见的,因此GET请求不安全;3、GET有请求缓存,而POST没有;4、GET用于取出数据,而…

    2025年3月7日
    200
  • node.js有哪些特性

    nodejs有三个特性:1、服务器端;Nodejs运行在服务器端,为Javascript提供运行环境的环境服务。2、非阻塞异步;Nodejs采用了非阻塞型I/O机制,在做I/O操作的时候不会造成任何的阻塞。3、事件驱动;当进来一个新的请求的…

    2025年3月7日
    200
  • 聊聊Node.js中的进程、线程、协程与并发模型

    Node.js 现在已成为构建高并发网络应用服务工具箱中的一员,何以 Node.js 会成为大众的宠儿?本文将从进程、线程、协程、I/O 模型这些基本概念说起,为大家全面介绍关于 Node.js 与并发模型的这些事。 进程 我们一般将某个程…

    2025年3月7日
    200

发表回复

登录后才能评论