NodeJS如何优雅的实现Sleep休眠

 更新时间:2024年09月05日 08:49:29   作者:HumorChen99  
这篇文章主要介绍了NodeJS如何优雅的实现Sleep休眠问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

NodeJS实现Sleep休眠

先打印1,然后1.5秒后打印2

/*
休眠函数sleep
调用 await sleep(1500)
 */
function sleep(ms) {
    return new Promise(resolve=>setTimeout(resolve, ms))
}
async function main() {
    console.log(1)
    await sleep(1500)
    console.log(2)
}
main()

NodeJS实现一个真正的Sleep,Sleep期间不影响其它线程执行

Node.js 是基于 Chrome V8 引擎的 JavaScript 运行环境,它采用了单线程、事件驱动和非阻塞I/O模型。

由于JavaScript是单线程的,传统意义上的线程睡眠(如Java中的Thread.sleep)在Node.js中并不适用,因为那会阻塞整个事件循环,从而影响其他所有任务的执行。

然而,如果你希望实现一个“sleep”效果,同时不阻碍其他异步操作的进行,你可以使用Promise结合setTimeout来模拟异步等待的效果。

这样,你可以在等待期间让出事件循环给其他任务处理,模拟并发执行的效果。

以下是一个简单的示例:

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

async function yourAsyncFunction() {
    console.log('开始执行');
    await sleep(2000); // 模拟“sleep”2秒
    console.log('2秒后继续执行');
}

yourAsyncFunction();

console.log('这句代码会立即打印,不会被sleep阻塞');

在这个例子中,sleep函数返回一个Promise,这个Promise在指定的毫秒数后解析,从而允许使用await关键字在异步函数中“等待”,而不会阻塞其他代码的执行。

console.log('这句代码会立即打印,不会被sleep阻塞')会立即执行,不受sleep影响,体现了非阻塞特性。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • pm2工具在Node.js开发部署中的重要作用详解

    pm2工具在Node.js开发部署中的重要作用详解

    这篇文章主要为大家介绍了pm2工具在Node.js开发部署中的重要作用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • 基于node.js之调试器详解

    基于node.js之调试器详解

    下面小编就为大家带来一篇基于node.js之调试器详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • koa+jwt实现token验证与刷新功能

    koa+jwt实现token验证与刷新功能

    这篇文章主要介绍了koa+jwt实现token验证与刷新功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • Node.JS中事件轮询(Event Loop)的解析

    Node.JS中事件轮询(Event Loop)的解析

    对NodeJs的事情轮询机造一孔之见。查阅了些许材料后,总算掀开了其神奇的里纱。下面这篇文章主要介绍了Node.JS中事件轮询(Event Loop)的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-02-02
  • 在Ubuntu系统上安装Ghost博客平台的教程

    在Ubuntu系统上安装Ghost博客平台的教程

    这篇文章主要介绍了在Ubuntu系统上安装Ghost博客平台的教程,Ghost博客平台以Node.js写成,需要的朋友可以参考下
    2015-06-06
  • Nodejs实现内网穿透服务

    Nodejs实现内网穿透服务

    很多人都不知道什么是内网穿透,就是公网客户端,可以访问局域网内的服务,本文详细的介绍了原理以及实现,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • 详解使用Typescript开发node.js项目(简单的环境配置)

    详解使用Typescript开发node.js项目(简单的环境配置)

    本篇文章主要介绍了详解使用Typescript开发node.js项目(简单的环境配置),非常具有实用价值,需要的朋友可以参考下
    2017-10-10
  • npm设置同时从多个包源加载包的方法

    npm设置同时从多个包源加载包的方法

    本文主要介绍了npm 设置同时从多个包源加载包的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • NodeJS http模块用法示例【创建web服务器/客户端】

    NodeJS http模块用法示例【创建web服务器/客户端】

    这篇文章主要介绍了NodeJS http模块用法,结合实例形式分析了node.js创建web服务器与客户端,进行HTTP通信的相关操作技巧,需要的朋友可以参考下
    2019-11-11
  • node中http模块的使用及执行流程

    node中http模块的使用及执行流程

    http这个模块的职责就是帮你创建编写服务器,接下来通过本文给大家介绍node中http模块的使用及执行流程,感兴趣的朋友一起看看吧
    2021-09-09

最新评论