用promise封装ajax

简介: 用promise封装ajax

https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest

var onSuccess = function(result){
   }; //成功的回调
var onFail = function(error){
   }; //失败的回调
var req = new XMLHttpRequest();
req.open("POST", "www.baidu.com", true); // true  是否异步
req.onload = function(){
   
  if(req.readyState === 4 && req.status === 200){
   
    onSuccess(req.response);
  } else {
   
    onFail(req.statusText);
  }
}
req.onerror = function(){
   
  onFail(Error("网络异常"));
}
function ajaxPrpmise () {
   
   let promise = new Promise( (resolve,reject) => {
   
              let xhr =  new XMLHttpRequest();
              xhr.open('get',''xx.gif',true)
              xhr.onreadystatechange = () =>{
    
                        if( xhr.readyState === 4 ){
   
                             if(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304 ){
   
                                 resolve( xhr.responseURL)
                             } else {
   
                                 reject( new Error(xhr.statusText))
                             }
                        }
              }

           xhr.send(null)
   } )
  return promise
}

参考: https://www.bilibili.com/video/BV1jv411P7Hp/?spm_id_from=333.788

const ajax = url => {
   
    return new Promise((resolve, reject) => {
   
        let req = new XMLHttpRequest();
        req.open("POST", url, true);
        req.onload = () => {
   
          if(req.readyState === 4 && req.status === 200){
   
            resolve(req.response);
          } else {
   
            reject(req.statusText);
          }
        }
        req.onerror = () => {
   
          reject(Error("网络异常"));
        }
    })
}
相关文章
|
12月前
|
前端开发 JavaScript
AJax(XHR+Get和Post+AJax的封装)
AJax(XHR+Get和Post+AJax的封装)
308 15
|
前端开发
AJAX发送请求方法封装和请求函数底层刨析以及axios二次封装
AJAX发送请求方法封装和请求函数底层刨析以及axios二次封装
|
前端开发
用Promise对象实现的 Ajax
用Promise对象实现的 Ajax
221 0
|
存储 前端开发
PROMISE解决AJAX中的串行和并行
PROMISE解决AJAX中的串行和并行
141 0
|
前端开发 Java
Promise--代码实现-- ajax 传统方式和 promise 方式和 promise 代码优化/重排 方式的对比--综合代码示例
Promise--代码实现-- ajax 传统方式和 promise 方式和 promise 代码优化/重排 方式的对比--综合代码示例
222 0
|
前端开发 JavaScript API
Promise封装Ajax请求
Promise封装Ajax请求
187 0
|
9月前
|
前端开发 JavaScript API
一文吃透 Promise 与 async/await,异步编程也能如此简单!建议收藏!
在前端开发中,异步编程至关重要。本文详解了同步与异步的区别,通过生活化例子帮助理解。深入讲解了 Promise 的概念、状态及链式调用,并引入 async/await 这一语法糖,使异步代码更清晰易读。还介绍了多个异步任务的组合处理方式,如 Promise.all 与 Promise.race。掌握这些内容,将大幅提升你的异步编程能力,写出更优雅、易维护的代码,助力开发与面试!
464 0
一文吃透 Promise 与 async/await,异步编程也能如此简单!建议收藏!
|
9月前
|
前端开发 JavaScript API
JavaScript异步编程:从Promise到async/await
JavaScript异步编程:从Promise到async/await
680 204
|
前端开发
使用 async/await 结合 try/catch 处理 Promise.reject()抛出的错误时,有什么需要注意的地方?
使用 async/await 结合 try/catch 处理 Promise.reject()抛出的错误时,有什么需要注意的地方?
683 155
|
前端开发 JavaScript 开发者
Async 和 Await 是基于 Promise 实现
【10月更文挑战第30天】Async和Await是基于Promise实现的语法糖,它们通过简洁的语法形式,借助Promise的异步处理机制,为JavaScript开发者提供了一种更优雅、更易于理解和维护的异步编程方式。
457 1