当前位置: 首页 > news >正文

如何在 Axios 中封装事件中心EventEmitter

在 Axios 中封装一个事件中心 EventEmitter 允许你在请求的不同阶段(如请求开始、请求成功、请求失败等)触发事件。这可以通过创建一个自定义的 Axios 实例,并结合 Node.js 的 events 模块来实现。以下是一个详细的步骤指南和示例代码,展示了如何在 Axios 中封装一个事件中心。

步骤 1: 安装 Axios

首先,确保你已经安装了 Axios。如果还没有安装,可以使用 npm 或 yarn 进行安装:

npm install axios

或者

yarn add axios

步骤 2: 创建事件中心类

接下来,创建一个新的类,该类将继承自 Node.js 的 EventEmitter 类,并封装 Axios 实例。

const axios = require('axios');
const EventEmitter = require('events');class AxiosEventEmitter extends EventEmitter {constructor(baseURL = '') {super();this.axiosInstance = axios.create({baseURL: baseURL,// 可以在这里添加其他 Axios 配置});// 设置请求拦截器this.axiosInstance.interceptors.request.use(config => {// 在请求发送前触发事件this.emit('request-start', config);return config;},error => {// 请求错误时触发事件this.emit('request-error', error);return Promise.reject(error);});// 设置响应拦截器this.axiosInstance.interceptors.response.use(response => {// 请求成功时触发事件this.emit('response-success', response);return response;},error => {// 响应错误时触发事件this.emit('response-error', error);return Promise.reject(error);});}// 封装 Axios 的请求方法request(config) {return this.axiosInstance(config);}get(url, params = {}, config = {}) {return this.axiosInstance.get(url, { params, ...config });}post(url, data = {}, config = {}) {return this.axiosInstance.post(url, data, config);}// 可以根据需要添加更多的封装方法,如 put, delete 等
}module.exports = AxiosEventEmitter;

步骤 3: 使用封装的事件中心

现在,你可以在你的应用程序中使用这个封装好的 AxiosEventEmitter 类。

const AxiosEventEmitter = require('./path/to/AxiosEventEmitter');const emitter = new AxiosEventEmitter('https://api.example.com');// 监听事件
emitter.on('request-start', config => {console.log('Request started:', config.url);
});emitter.on('response-success', response => {console.log('Response succeeded:', response.data);
});emitter.on('request-error', error => {console.error('Request error:', error.message);
});emitter.on('response-error', error => {console.error('Response error:', error.response ? error.response.data : error.message);
});// 发起一个 GET 请求
emitter.get('/some-endpoint').then(response => {// 处理响应}).catch(error => {// 处理错误});

在这个示例中,AxiosEventEmitter 类封装了 Axios 实例,并添加了请求和响应拦截器来触发事件。然后,你可以在你的应用程序中创建这个类的实例,并监听你感兴趣的事件。当请求开始时、成功时、或遇到错误时,相应的事件监听器将被调用。

http://www.lryc.cn/news/454294.html

相关文章:

  • 计算机网络——ftp
  • Redis:set类型
  • 九大排序之插入排序
  • DNABERT: 一个基于 Transformer 双向编码器表征的预训练 DNA 语言模型
  • 基于Hive和Hadoop的电商消费分析系统
  • 记一次炉石传说记牌器 Crash 排查经历
  • 精益驱动的敏捷开发
  • SolidWorks机器转ROS2 URDF
  • (Linux驱动学习 - 6).Linux中断
  • SpringBoot驱动的明星周边产品电商解决方案
  • C++、Ruby和JavaScript
  • 32单片机 低功耗模式
  • 501、二叉搜索树中的众数
  • 【洛谷】P2330 [SCOI2005] 繁忙的都市 的题解
  • 第18场小白入门赛(蓝桥杯)
  • Redission · 可重入锁(Reentrant Lock)
  • 初阶C语言-指针
  • 论文笔记:微表情欺骗检测
  • 智能家居有哪些产品?生活中常见的人工智能有哪些?
  • 洗车行软件系统有哪些 佳易王洗车店会员管理系统操作教程#洗车店会员软件试用版下载
  • 【Java】springboot 项目中出现中文乱码
  • 开放式耳机是什么意思?漏音吗?开放式的运动蓝牙耳机推荐
  • 如何优雅的处理NPE问题?
  • k8s 中存储之 NFS 卷
  • Redis中BitMap实现签到与统计连续签到功能
  • 【Spring】“请求“ 之传递 JSON 数据
  • 文心一言 VS 讯飞星火 VS chatgpt (359)-- 算法导论24.3 1题
  • Redis-预热雪崩击穿穿透
  • jvisualvm学习
  • Gazebo环境下开源UAV与USV联合仿真平台