node事件循环和process模块实例分析


Posted in Javascript onFebruary 14, 2020

本文实例讲述了node事件循环和process模块。分享给大家供大家参考,具体如下:

1.node.js事件循环

node.js事件可以继续插入事件,如果有事件就继续执行下去,每一次事件处理结束后等待下一个事件的发生;没有要处理的事件了,那整个就结束了;

setTimeout插入一个 计时器事件,时间单位为毫秒;

// 插入一个事件,让它多长(毫秒)时间以后执行一次
setTimeout(function() {
  console.log("set time out");
}, 3 * 1000); //3秒后执行显示 set time out
  setInterval插入一个不断循环的计时器事件;
// 计时器事件, 每隔一段事件触发一次, time的单位是毫秒
setInterval(function () {
  console.log("get time doing");
}, 2 * 1000); // 每间隔2秒调用一次
//结果为:
//get time doing
//get time doing
//get time doing
//....

2.process模块属性和事件

process模块用来与当前进程互动,获取相关操作系统相关信息;process是全局变量不需要require导入模块;

属性:process.pid, process.version, process.platform, process.title,process.argv, process.execPath, process.stdout, process.stdin, process.stderr, process.env

// process是node的一个全局模块
console.log(process.pid); //11544
console.log(process.version); //V8.9.0
console.log(process.platform); //WIN32
console.log(process.title); //D:\Program Files\nodejs\node.exe
// 在启动的时候,我们可以往程序里面传入参数,
//参数都是字符串
console.log(process.argv); //结构为数组
//Array(2) ["D:\Program Files\nodejs\node.exe", "c:\Users\Administrator\Desktop\main1.js"]

exit事件, process.on()

// 当我们的node在每次退出的时候,都会抛出一个exit这样一个事件,如果我们用户监听这个事件,那么
// 当有exit事件发生的时候,我们之前设置的回掉函数,将会被调用;
// process.on来监听事件
process.on("exit", function() {
  console.log("now node exit!!!!");
});
  uncaughtException事件 function(err){};
// 当我们发生了一个未知的异常的时候,我们调用这个回掉函数;
// node 停止处理当前这个事件,继续等待下一个事件的处理,不会整个退出,
// 服务器就不会随意的奔溃
// 可以把这个错误,保存起来,方便我们去查找
process.on("uncaughtException", function(err) {
  console.log("uncaughtException called ", err);
});
// 当我们的程序,如果运行的时候有异常,那么这个时候,我们可以通过捕获异常,
// 如果说我们没有捕获的异常,这个uncaughtException
// 如果发生uncaughtException,node是会退出的;
// 没有主动捕获,所以javascript解释器,他是不会继续执行的;

处理的时候遇到了异常,如果这个异常监听,那么就继续处理下一个事件,否则直接停止退出node ;

3.process重要方法

    progress.cwd; // 获取当前的工作目录

    progress.uptime // 获取当前进程运行的时间

    progress.chdir // 设置当前的工作目录;

    progress.nextTick // 下一次循环的时候调用;

// current work director 当前的工作目录
// ./ ---> C:\Home\workspace\node_js
process.chdir("C:\\Home\\workspace");
// 修改我们的工作目录,工作目录默认你的node是在哪个目录下启动的,就是那个目录为你的工作目录
console.log(process.cwd()); //c:\Users\Administrator\Desktop
// while处理时间,进入等待时间之前调用,完成后,去事件里面来等待新的事件发生;
process.nextTick(function() {
  console.log("nextTick");
});

希望本文所述对大家node.js程序设计有所帮助。

Javascript 相关文章推荐
基于jsTree的无限级树JSON数据的转换代码
Jul 27 Javascript
js对象之JS入门之Array对象操作小结
Jan 09 Javascript
js自定义事件代码说明
Jan 31 Javascript
jQuery版Tab标签切换
Mar 16 Javascript
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
Oct 12 Javascript
利用Angularjs和bootstrap实现购物车功能
Aug 31 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
Sep 19 Javascript
单行 JS 实现移动端金钱格式的输入规则
May 22 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
Apr 22 Javascript
深入了解JavaScript 私有化
May 30 Javascript
Ant design vue中的联动选择取消操作
Oct 31 Javascript
使用Typescript开发微信小程序的步骤详解
Jan 12 Javascript
vue+springboot图片上传和显示的示例代码
Feb 14 #Javascript
JavaScript简单编程实例学习
Feb 14 #Javascript
JS实现打砖块游戏
Feb 14 #Javascript
从零使用TypeScript开发项目打包发布到npm
Feb 14 #Javascript
JavaScript中的this原理及6种常见使用场景详解
Feb 14 #Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
Feb 14 #Javascript
Angular之jwt令牌身份验证的实现
Feb 14 #Javascript
You might like
认识并使用PHP超级全局变量
2010/01/26 PHP
php把session写入数据库示例
2014/02/26 PHP
PHP语法自动检查的Vim插件
2014/08/11 PHP
PHP嵌套输出缓冲代码实例
2015/05/12 PHP
一页面多XMLHttpRequest对象
2007/01/22 Javascript
JavaScript内核之基本概念
2011/10/21 Javascript
javascript 基础篇2 数据类型,语句,函数
2012/03/14 Javascript
javascript中createElement的两种创建方式
2015/05/14 Javascript
javascript实现仿腾讯游戏选择
2015/05/14 Javascript
JQuery中ajax方法访问web服务实例
2015/07/18 Javascript
Jquery 全选反选实例代码
2015/11/19 Javascript
JavaScript学习笔记整理之引用类型
2016/01/22 Javascript
jQuery siblings()用法实例详解
2016/04/26 Javascript
Javascript之BOM(window对象)详解
2016/05/25 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
2016/12/14 Javascript
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
JavaScript事件冒泡与事件捕获实例分析
2018/08/01 Javascript
jquery图片预览插件实现方法详解
2019/07/18 jQuery
微信小程序实现底部弹出模态框
2020/11/18 Javascript
详解Python中映射类型的内建函数和工厂函数
2015/08/19 Python
python 默认参数问题的陷阱
2016/02/29 Python
Python模拟用户登录验证
2017/09/11 Python
python实现二叉查找树实例代码
2018/02/08 Python
python3基于TCP实现CS架构文件传输
2018/07/28 Python
python文件写入write()的操作
2019/05/14 Python
django基础学习之send_mail功能
2019/08/07 Python
python实现对列表中的元素进行倒序打印
2019/11/23 Python
Spring Cloud Feign高级应用实例详解
2019/12/10 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
HTML5 placeholder(空白提示)属性介绍
2013/08/07 HTML / CSS
HTML5地理定位实例
2014/10/15 HTML / CSS
若通过ObjectOutputStream向一个文件中多次以追加方式写入object,为什么用ObjectInputStream读取这些object时会产生StreamCorruptedException?
2016/10/17 面试题
学生会主席事迹材料
2014/01/28 职场文书
机械制造毕业生求职信
2014/03/03 职场文书
出生证明范本
2015/06/15 职场文书