原生ajax进行简单的封装

本文详细介绍了如何使用Promise和async/await语法封装一个通用的AJAX请求函数,以及如何在Node.js中优雅地处理响应和错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/* 
xhr + promise 封装一个异步ajax请求的通用函数 简洁版

ajax ('xxx.json')
*/

function ajax(url) {
  return new Promise((resolve, reject) => {
    // 创建一个XHR对象

    const xhr = new XMLHttpRequest()
    // 初始化一个异步请求(还没发请求)

    xhr.open('GET', url, true)
    // 绑定状态改变的监听

    xhr.onreadystatechange = function () { 
        /*
       ajax引擎得到响应数据后

       将xhr的readyState属性指定为4
       将响应数据保存在response / responseText属性上

       调用此回调函数

       */

        
      // 如果状态值不为4, 直接结束(请求还没有结束)

      if (xhr.readyState !== 4) {
        return

     }
      // 如果响应码在200~~299之间, 说明请求都是成功的

      if (xhr.status>=200 && xhr.status<300) {
        // 指定promise成功及结果值

        resolve(JSON.parse(xhr.responseText))
     } else { // 请求失败了

        // 指定promise失败及结果值

        reject(new Error('request error staus '+ request.status))
     }
   }
    xhr.send()
 })
}

使用:

// 使用async/await语法
async function fetchData() {
  try {
    const data = await ajax('https://example.com/api/data.json');
    console.log('Received data:', data);
    // 在这里处理获取到的数据
  } catch (error) {
    console.error('Failed to fetch data:', error.message);
    // 在这里处理错误情况
  }
}

fetchData();

// 或者使用Promise链式调用
ajax('https://example.com/api/data.json')
  .then(data => {
    console.log('Received data:', data);
    // 在这里处理获取到的数据
  })
  .catch(error => {
    console.error('Failed to fetch data:', error.message);
    // 在这里处理错误情况
  });

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值