IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Node.js回调函数、事件机制(EventEmitter类)、全局对象 -> 正文阅读

[JavaScript知识库]Node.js回调函数、事件机制(EventEmitter类)、全局对象

目录

Node.js的回调函数

什么是回调函数

回调函数示例

Node.js的事件机制

EventEmitter类的各种方法

示例:EventEmitter类的on方法

Node.js的全局对象

process对象

process事件


Node.js的回调函数

什么是回调函数

回调函数指的就是一个函数A作为参数传递给一个参数B,然后在B的函数体内调用函数A。此时,称函数A为回调函数。

function main(info,callback){   //我是主函数,参数列表中的callback是一个回调函数
   console.log('还在回家的路上');
   console.log('到家了,发条消息吧');
   callback(info);   //调用回调函数
} 
function sendMsg(msg){   //我是回调函数
   console.log(msg);
}
main('亲爱的,我到家了!',sendMsg);   //执行主函数

回调函数示例

const fs=require('fs');  //引入fs模块
//异步读取文件内容
fs.readFile('test.txt',function(err,data){
    if(err){
        return err;   //读取文件失败则报错
    }else{
        console.log(data.toString());   //读取文件成功则输出文件内容
    }
})
console.log("Node程序已经执行结束!")

执行结果

Node.js的事件机制

Node.js 使用事件驱动模型,当web server接收到请求,就把它关闭然后进行处理,然后去服务下一个web请求。当这个请求完成,它被放回处理队列,当到达队列开头,这个结果被返回给用户。

由于nodejs是单线程运行的,所以nodejs需要借助事件轮询,不断去查询事件队列中的事件消息,然后执行该事件对应的回调函数,有点类似windows的消息映射机制。

在事件驱动模型中,会生成一个主循环来监听事件,当检测到事件时触发回调函数。

在Node.js的事件机制中主要有三类角色:事件(Event)、事件发射器(EventEmitter)、事件监听器(EventListener)。

Node.js 有多个内置的事件,我们可以通过引入 events 模块,并通过实例化 EventEmitter 类来绑定和监听事件。

EventEmitter类的各种方法

event:代表事件名? ?listener代表事件处理函数

方法名与参数描述
addListener(event,listener)?事件监听函数
on(event, listener)对指定对象绑定事件处理函数(addListener方法的别名)
once(event, listener)对指定对象指定只执行一次的事件处理函数
removeListener(event, listener)删除事件
setMaxListeners(n)?指定对象处理函数的最大数量,n为正数值,代表最大的可指定事件处理函数的数量
listeners(event)?获取指定对象的所有事件处理函数
emit(event, [arg1], [arg2], [...])?手动触发指定事件

示例:EventEmitter类的on方法

当服务器接收到客户端请求时,在控制台窗口中输出客户端请求的目标地址(URL地址),并使用响应对象的end方法立即结束响应。

var http = require("http");
var server = http.createServer();  //创建服务器
server.on("request",function(req,res){  //绑定事件
    console.log(req.url);
    res.end("Hello World!");
})
server.listen(8080,"127.0.0.1")

在WebStorm中运行此代码,使其监听在8080端口上,打开浏览器输入127.0.0.1.8080即可运行成功。

Node.js的全局对象

Node.js的全局对象是具有全局性的,它们可在所有的模块中应用。我们并不需要在应用中引用这些对象,而可以直接使用它们。

__filename

__filename表示正在执行的代码的文件名。这时此代码文件的解析绝对路径。(当前被执行的文件的全名--->绝对路径+文件名

例如:创建一个js文件名为t2.js,里面的代码为

console.log("文件名为:"+__filename);

__dirname

__dirname表示当前正在执行的脚本所在目录的名称。

例如:创建一个js文件名为t2.js,里面的代码为

console.log("路径名为:"+__dirname);

process对象

process对象是 Node 的一个全局对象,提供当前 Node 进程的信息。它可以在脚本的任意位置使用,不必通过require命令加载。该对象部署了EventEmitter接口。

属性:process对象提供一系列属性,用于返回系统信息。

属性说明
process.argv返回一个数组,成员是当前进程的所有命令行参数
process.env返回一个对象,成员为当前Shell的环境变量
process.installPrefix返回一个字符串,表示Node安装路径的前缀
process.pid返回一个数字,表示当前进程的进程号
process.platform返回一个字符串,表示当前的操作系统,比如Linux
process.title返回一个字符串,默认值为node,可以自定义该值
process.version返回一个字符串,表示当前使用的Node版本

方法?

方法说明
process.chdir()切换工作目录到指定目录
process.cwd()返回运行当前脚本的工作目录的路径

process.exit()

退出当前进程

process.getgid()返回当前进程的组ID(数值)
process.getuid()返回当前进程的用户ID(数值)
process.nextTick()指定回调函数在当前执行栈的尾部,下一次EventLoop之前执行
process.on()监听事件
process.setgid()指定当前进程的组,可以使用数字ID,也可以使用字符串ID
process.setuid()指定当前进程的用户,可以使用数字ID,也可以使用字符串ID

process事件

process对象部署了EventEmitter接口,可以使用on方法监听各种事件,并指定回调函数。

process支持的事件还有:

data事件:数据输出输入时触发

exit事件:进程退出前触发

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-09 11:39:18  更:2021-09-09 11:39:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:48:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码