基于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>
相关推荐
Qrun1 天前
Windows11安装nvm管理node多版本
前端·vscode·react.js·ajax·npm·html5
一叶难遮天3 天前
开启RN之旅——前端基础
前端·javascript·promise·js基础·es6/ts·npm/nrm
爱怪笑的小杰杰3 天前
浏览器端缓存地图请求:使用 IndexedDB + ajax-hook 提升地图加载速度
ajax·okhttp·缓存
没有故事、有酒3 天前
Ajax介绍
前端·ajax·okhttp
朝新_3 天前
【SpringMVC】详解用户登录前后端交互流程:AJAX 异步通信与 Session 机制实战
前端·笔记·spring·ajax·交互·javaee
咖啡の猫3 天前
vue 项目中常用的 2 个 Ajax 库
vue.js·ajax·okhttp
咖啡の猫5 天前
Vue解决开发环境 Ajax 跨域问题
前端·vue.js·ajax
.生产的驴6 天前
React 路由权限跳转 Token判断 路由控制 登录状态控制
前端·javascript·react.js·ajax·前端框架·c#·ecmascript
沐雨橙风ιε8 天前
防止表单重复提交功能简单实现
java·spring boot·ajax·axios·spring mvc
PineappleCoder9 天前
大模型也栽跟头的 Promise 题!来挑战一下?
前端·面试·promise