基于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>
相关推荐
徐先生 @_@|||20 天前
Spark的DataFrame的Map Task和Reduce Task深入理解
ajax·spark·php
爱敲代码的小鱼23 天前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax
Irene199125 天前
Promise 未捕获 reject 错误处理指南
promise·错误处理
2301_780669861 个月前
Vue(入门配置、常用指令)、Ajax、Axios
前端·vue.js·ajax·javaweb
2601_949809591 个月前
flutter_for_openharmony家庭相册app实战+相册详情实现
javascript·flutter·ajax
qq_336313931 个月前
javaweb-Ajax
前端·javascript·ajax
闻哥1 个月前
从 AJAX 到浏览器渲染:前端底层原理与性能指标全解析
java·前端·spring boot·ajax·okhttp·面试
码农幻想梦1 个月前
实验九 Restful和ajax实现
后端·ajax·restful
OCKHrYfK1 个月前
c#上位机开发项目 c#语言编写的上位机控制软件,空压机项目 采用modbus rtu协议与西...
ajax
TTGGGFF1 个月前
控制系统建模仿真(十):实战篇——从工具掌握到工程化落地
前端·javascript·ajax