基于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>
相关推荐
星_离13 小时前
《Ajax - 实战基础篇》
前端·ajax
李纲明16 小时前
WordPress 结账页一直转圈不跳支付:AJAX、缓存排除、支付回调和 REST 怎么逐层核
运维·ajax·缓存·wordpress·woocommerce·devdiy·结账
爱吃火鸡面呀5 天前
Spark RDD 行动算子(Action)详解
windows·ajax·spark
变与不变80610 天前
jQuery 核心语法与 jQuery AJAX
前端·ajax·jquery
牧瀬クリスだ15 天前
Ajax入门:从原生XHR到axios实战
java·spring boot·ajax·okhttp
liangshanbo121522 天前
Promise 高频面试题 + 满分答案
promise
liangshanbo12151 个月前
面试题:页面需要发起大量 Ajax / HTTP 请求时,如何优化请求性能?
前端·http·ajax
RobinDevNotes1 个月前
JAX 分布式训练,和 PyTorch 有什么不一样
人工智能·深度学习·ajax
小七在进步1 个月前
类和对象(四)
java·javascript·ajax
wcy03101 个月前
POST为什么会发送两次请求
javascript·ajax