美文网首页
使用promise封装ajax请求

使用promise封装ajax请求

作者: A_走在冷风中 | 来源:发表于2021-08-26 11:32 被阅读0次

封装一个ajax请求方法:

function ajax (data) {
  return new Promise((resolve, rejects) => {
    // 创建一个XMLHttpRequest对象去发送一个请求
    const xhr = new XMLHttpRequest()
    // 判断请求类型,请求的地址就是参数传递的url
    if(data.methods==="post"){
       xhr.open(data.methods, data.url, true);
          xhr.send(JSON.stringify(data.param));
       }else{
          xhr.open(data.methods, data.url, true);
          xhr.send();
       }
     }
    // 设置返回的类型是json,是HTML5的新特性
    // 我们在请求之后拿到的是json对象,而不是字符串
    xhr.responseType = 'json'
    // html5中提供的新事件,请求完成之后(readyState为4)才会执行
    xhr.onload = () => {
      if(this.status === 200) {
        // 请求成功将请求结果返回
        resolve(this.response)
      } else {
        // 请求失败,创建一个错误对象,返回错误文本
        rejects(new Error(this.statusText))
      }
    }
    // 开始执行异步请求
    xhr.send()
  })
}

调用ajax方法,发送请求

let data = {
  url: '', //请求地址
  methods: 'post',
  param: formData,
}
let p = ajax(data)
p.then(
  (res) => {
    //请求成功
    res.data.forEach((val, index) => {
      cent.innerHTML += `<span id='' class='zxz-portry_content_span'>${val}</span>`
    })
  },
  (reason) => {
    //请求失败
    alert(reason.msg)
  }
)

相关文章

  • 使用promise封装ajax请求

    封装一个ajax请求方法: 调用ajax方法,发送请求

  • Promise应用

    1、使用Promise封装Ajax请求 作者:这波能反杀链接:https://www.jianshu.com/p/...

  • 异步编程笔记

    环境:chrome 80演习:用Promise async/await封装$.ajax Promise 第一次请求...

  • promise封装原生ajax、jqueryAjax、axios

    原生js的ajax封装+promise 将原生js的ajax请求单独封装成一个数据请求的模块, 需要的时候直接调用...

  • axios快速上手(简单使用)

    axios对ajax请求进行了封装,并且使用promise的链式调用使得网络请求的代码逻辑更为清晰,同时支持asy...

  • 异步编程解决方案Promise

    使用方法 状态(不可逆,暂不举例) 使用Promise优雅ajax请求 ajax请求 回调地狱 cllback h...

  • ajax请求封装

    能发起ajax请求的函数模块 函数的返回值是promise对象 进行接口请求封装

  • Promise解析

    Promise使用场景 回调地狱:当你发送一个ajax请求,继而又需要请求一个ajax请求,并且此ajax请求参数...

  • ES6

    AJAX 异步网络请求 Promise 使用了Promise对象之后可以链式调用的方式组织代码 Promise.a...

  • Promise封装_AJAX

    Promise封装_AJAX 调用格式

网友评论

      本文标题:使用promise封装ajax请求

      本文链接:https://www.haomeiwen.com/subject/yxteiltx.html