基于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>
相关推荐
Viking_bird1 天前
Apache Spark 3.2.0 开发测试环境部署指南
大数据·分布式·ajax·spark·apache
宇寒风暖5 天前
@(AJAX)
前端·javascript·笔记·学习·ajax
卖寂寞的小男孩6 天前
Spark执行计划与UI分析
ui·ajax·spark
teeeeeeemo8 天前
js 实现 ajax 并发请求
开发语言·前端·javascript·笔记·ajax
Sy_planA8 天前
介绍一下jQuery的AJAX异步请求
ajax·okhttp·jquery
为什么名字不能重复呢?8 天前
AJAX入门(1)
学习·ajax
甘露寺9 天前
深入理解 Axios 请求与响应对象结构:从配置到数据处理的全面指南
javascript·ajax
teeeeeeemo9 天前
Ajax、Axios、Fetch核心区别
开发语言·前端·javascript·笔记·ajax
Elieal12 天前
深入浅出:Ajax 与 Servlet 实现前后端数据交互
前端·ajax·servlet
Allen Bright13 天前
【JS-7-ajax】AJAX技术:现代Web开发的异步通信核心
前端·javascript·ajax