[译] Node.js 中的计时器 && unref(关于 Nodejs 特性,翻译自 Node.js 官网文档)

[译] Node.js 中的计时器 && unref(关于 Nodejs 特性,翻译自 Node.js 官网文档)

关于 setTimeout, setInterval, setImmediate 比较详细,权威的讲解。

结尾还有对计时器对象的 unref && ref 两个方法的实例讲解(说实话,我也是翻译这篇文章才知道还有这两个放方法!)

文章地址为:Node.js 中的计时器

上述文章均用 Breword 翻译工具 进行快速翻译。


1 回复

在Node.js中,计时器(Timers)是处理异步操作和时间延迟的重要工具。setTimeoutsetIntervalsetImmediate是常用的几个计时器函数。而unref方法则是与这些计时器相关联的一个重要特性,它允许Node.js事件循环在没有其他活动任务时退出,即使计时器还在等待触发。

以下是一个简单的例子,展示了如何使用setTimeoutunref

// 创建一个setTimeout计时器,10秒后执行
const timer = setTimeout(() => {
  console.log('This message is printed after 10 seconds');
}, 10000);

// 使用unref方法,允许Node.js事件循环在没有其他活动任务时退出
timer.unref();

console.log('Program execution continues...');

// 如果没有其他异步操作,程序将在打印完'Program execution continues...'后立即退出,
// 不会因为setTimeout还在等待而保持运行状态。

在这个例子中,即使setTimeout设置了10秒的延迟,由于调用了unref方法,Node.js事件循环不会因此保持活动状态。如果此时没有其他异步任务(如I/O操作、其他计时器等),程序将在打印完'Program execution continues...'后立即退出。

unref方法特别适用于需要在后台执行某些任务,但又不希望这些任务阻止程序正常退出的场景。通过合理使用unref,可以更好地控制Node.js应用的运行和退出行为。

回到顶部