基于Promise手动封装ajax

promise-ajax.js

java 复制代码
function ajax({url='xxx', type="get", dataType="json"}) {
  return new Promise((resolve, reject) => {
    let xhr = new XMLHttpRequest();
    xhr.open(type, url, true);
    xhr.responseType = dataType;
    xhr.onload = function () { // xhr.readState=4 xhr.status=200
      if(xhr.status == 200){
        resolve(xhr.response) //成功调用成功的方法
      }else{
        reject('not found');
      }
    };
    xhr.onerror = function (err) {
        reject(err) // 失败调用失败的方法
    };
    xhr.send();
  })
}

使用

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
<body>
  <div id="app"></div>
  <script src="node_modules/vue/dist/vue.js"></script>
  <script src="promise-ajax.js"></script>
  <script>
    let vm = new Vue({
      el: '#app',
      created(){
        ajax({url: './carts.json'}).then((res)=>{
          console.log(res)
        }, (err)=>{
          console.log(err)
        })
      },
      data: {
        products: []
      }
    })
  </script>
</body>
</html>
相关推荐
Thanks_ks5 天前
从零手写一个 Promise:深入理解 JavaScript 异步编程的本质
javascript·promise·事件循环·异步编程·手写源码·前端进阶·promises/a+
zzx2006__7 天前
Ajax➕node.js➕webpack
ajax·webpack·node.js
南川琼语8 天前
HTTP——AJAX
前端·javascript·ajax
肖志-AI全栈10 天前
从零讲透 Ajax:XHR、Fetch、JSON 序列化到异步编程全链路
前端·ajax·json
To_OC12 天前
别再串行写 await 了,Promise.all 才是并行请求的正确打开方式
前端·javascript·promise
HjhIron14 天前
Node.js 内置模块之 path 与 fs:从路径拼接到异步演进
node.js·promise
想要成为糕糕手17 天前
前端异步编程的终极指南:从 Promise 到 async/await,这一次彻底搞懂!
javascript·promise
年轻的砖头18 天前
以Ajax方式提交整个表单
前端·javascript·ajax
之歆1 个月前
Promise 基础技术深度解析:从回调地狱到链式调用
前端·okhttp·promise