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

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求

promise就有reject和resolve了,就不必写成功和失败的回调函数了

   const BASEURL = './手写ajax/test.json'function promiseAjax() {return new Promise((resolve, reject) => {const xhr = new XMLHttpRequest();xhr.open("get", BASEURL, true);// 设置请求头xhr.setRequestHeader("accept", "application/json");// 设置超时时间\const timeout = 1000;xhr.timeout = timeout;// 监听状态:箭头函数没有thisxhr.onreadystatechange =  () =>  {// 监听ajaxif (xhr.readyState !== 4) {return;}// 监听httpif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {resolve(xhr.response)} else {reject(new Error(xhr.statusText))}}// 处理错误情况xhr.onerror = () =>  {reject(new Error(xhr.statusText))}xhr.ontimeout =  () =>  {reject(new Error(xhr.statusText))}// 设置格式\xhr.responseType = "json"// 发送请求xhr.send(null);})}// 测试调用promiseAjax().then(res => console.log("成功:", res),err => console.error("失败:", err));
http://www.xdnf.cn/news/958249.html

相关文章:

  • 内网im,局域网环境下BeeWorks 如何保障数据安全?
  • MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
  • 基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
  • GraphRAG优化新思路-开源的ROGRAG框架
  • python训练营打卡第49天
  • 三元组 题解
  • 日志的具体使用
  • deepseek+coze开发的智能体页面
  • 链表的实现与介绍
  • codeforces C. Cool Partition
  • X86架构离线环境安装Ollama
  • DPC密度峰值聚类
  • 【MPC-C++】qpOASES 源码编译与链接,编译器设置细节
  • bond配置与拆卸
  • 理解OpenFOAM案例中的blockMesh文件里的simpleGrading
  • 【AI论文】CASS:Nvidia到AMD的数据、模型和基准测试的转换
  • 应对无法定位程序输入点kernel32.dll错误的详尽指南:从问题分析到解决方案
  • 如何迁移Cordova应用到HarmonyOS 5 以及迁移时常见的问题?
  • RK3288项目(四)--linux内核之V4L2框架及ov9281驱动分析(中)
  • 深入理解Optional:处理空指针异常
  • upload-labs文件上传_文件上传漏洞_靶场
  • 【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
  • 易学探索助手-个人记录(十四)
  • 【使用LLM搭建系统】5 处理输入: 链式 Prompt Chaining Prompts
  • 运行vue项目报错 errors and 0 warnings potentially fixable with the `--fix` option.
  • React hook之useRef
  • STM32---外部32.768K晶振(LSE)无法起振问题
  • 模型重展UV后绘制纹理
  • 什么是人工智能(AI)?大学想学AI,该如何入手?
  • 【CATIA的二次开发24】抽象对象Document涉及文档生命周期的方法