无名阁,只为技术而生。流水不争先,争的是滔滔不绝。

nodejs sleep方法 模拟-Node.js-sleep-函数 全网首发(图文详解1)

前沿技术 Micheal 3个月前 (05-09) 47次浏览 已收录 扫描二维码

nodejs sleep方法

Node.js 本身并没有内置的 sleep 函数,因为 Node.js 是以非阻塞 I/O 和事件驱动设计为主旨。不过,你可以使用不同的方法来模拟 sleep 功能。

下面将提供两种方式来实现 sleep 功能:一种是使用 Node.js 的内置工具 setTimeout 实现异步等待,另一种是使用 Atomics.wait 实现同步等待。但需要注意的是,在 Node.js 中使用同步等待通常是不推荐的,因为它会阻塞事件循环,影响性能和用户体验。

方法一:使用 setTimeout 实现异步等待

这是最常用的方法,通过 PromisesetTimeout 使代码异步地“休眠”。

创建一个 sleep 函数:

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

使用这个 sleep 函数来暂停执行:

(async () => {
  console.log('Sleeping for 5 seconds...');

  // 调用 sleep 函数,等待5秒
  await sleep(5000);

  console.log('Woke up after 5 seconds');
})();

方法二:使用 Atomics.wait 实现同步等待

在这个方法中,我们将会使用 Atomics.wait。这个方法主要用于 Web Workers 中的多线程同步,但同样可以用于主线程中同步休眠。然而,如前所述,它会阻塞 Node.js 的事件循环,除非有特殊需求,否则不建议使用。

const { Atomics, SharedArrayBuffer } = require('worker_threads');

function sleep(ms) {
  const sharedBuffer = new SharedArrayBuffer(4);
  const sharedArray = new Int32Array(sharedBuffer);
  Atomics.wait(sharedArray, 0, 0, ms);
}

使用这个 sleep 函数来暂停执行:

console.log('Sleeping for 5 seconds...');

// 调用同步 sleep 函数,等待5秒
sleep(5000);

console.log('Woke up after 5 seconds');

只要是用于开发过程中,以上代码直接复制粘贴到你的 JavaScript 文件中即可,它们不需要额外的配置就可以运行。

在实际的开发过程中,强烈建议使用异步的方式去处理 sleep,以避免阻塞事件循环。对于 Web 服务器和其他需要快速响应的应用程序来说,保持非阻塞是至关重要的。
MySQL中如何使用RAND函数生成一个随机数 MySQL-RAND函数简介 全网首发(图文详解1)
华为trt-al00是什么型号 华为TRT-AL00开发流程 全网首发(图文详解1)

喜欢 (0)
[]
分享 (0)
关于作者:
流水不争先,争的是滔滔不绝