基于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>
相关推荐
叫我一声阿雷吧2 小时前
JS 入门通关手册(42):Promise 并发控制(all/race/allSettled/any 手写 + 实战)
javascript·promise·并发控制·promise.all·js异步编程·promise.race·手写promise
3秒一个大1 天前
Cookie/Session vs JWT 双 Token:登录认证方案的演进与对比
前端·安全·ajax
华科易迅1 天前
Vue通过Ajax获取后台路由信息
vue.js·ajax·okhttp
用户8113581881202 天前
【AJAX-Day2】Promise与回调地狱
前端·ajax
牛奶2 天前
setTimeout设为0就马上执行?JS异步背后的秘密
前端·性能优化·promise
酉鬼女又兒7 天前
零基础快速入门前端蓝桥杯 Web 备考:AJAX 与 XMLHttpRequest 核心知识点及实战(可用于备赛蓝桥杯Web应用开发)
前端·ajax·职场和发展·蓝桥杯·css3·js
HP-Patience8 天前
【Python爬虫常见错误】- AJAX动态加载数据爬取
爬虫·python·ajax
Hello.Reader9 天前
Spark 4.0 新特性Python Data Source API 快速上手
python·ajax·spark
独断万古他化10 天前
【Java 实战项目】多用户网页版聊天室:消息传输模块 —— 基于 WebSocket 实现实时通信
java·spring boot·后端·websocket·ajax·mybatis
Hello.Reader11 天前
Spark Connect 快速入门远程连接 Spark 集群实战
javascript·ajax·spark