基于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>
相关推荐
想要成为糕糕手6 小时前
JavaScript 异步编程完全指南
javascript·面试·promise
浮生望2 天前
JavaScript 异步编程核心:从同步阻塞到 Promise 事件循环
javascript·promise
先吃饱再说2 天前
为什么 `setTimeout` 会“插队”?JS 事件循环与 Promise 通关笔记
前端·javascript·promise
零壹AI实验室10 天前
NVIDIA RTX Spark深度测评:个人AI智能体时代真的来了?
人工智能·ajax·spark
清水白石00811 天前
Python 变量的本质:从“盒子思维”到“引用思维”,彻底理解赋值到底发生了什么
java·python·ajax
海市公约15 天前
Axios网络请求库核心特性与拦截器封装实践
axios·前端开发·promise·拦截器·网络封装
来恩100315 天前
jQuery对Ajax的支持
前端·ajax·jquery
流年如夢16 天前
类和对象(中)
开发语言·javascript·ajax·ecmascript
努力成为AK大王17 天前
从前端到数据库:一个 Web 项目的完整通信链路解析
前端·数据库·ajax·jdbc
步十人21 天前
【JavaScript】通过AJAX技术让前端发请求到后端
javascript·ajax·okhttp