基于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>
相关推荐
小小优化师 anny8 小时前
WordPress如何配置AJAX以支持点击加载更多?
前端·javascript·ajax
无限大.1 天前
理解AJAX与Axios:异步编程的世界
前端·ajax·okhttp
赵大仁4 天前
前端实时显示当前在线人数的实现
前端·javascript·ajax·json·html5
猛踹瘸子那条好腿(职场发疯版)5 天前
Vue.js Ajax(vue-resource)
vue.js·ajax·okhttp
viqecel5 天前
页面滚动下拉时,元素变为fixed浮动,上拉到顶部时恢复原状,js代码以视频示例
前端·javascript·ajax·滚动下拉浮动
Heavydrink6 天前
ajax与json
java·ajax·json
前端青山6 天前
使用XMLHttpRequest进行AJAX请求的详解
前端·javascript·ajax·okhttp·前端框架
可涵不会debug7 天前
前端基础技术全解析:从HTML前端基础标签语言开始,逐步深入CSS样式修饰、JavaScript脚本控制、Ajax异步通信以及WebSocket持久通信
前端·javascript·css·ajax·html
丢失的林夕7 天前
axios的替代方案onion-middleware
前端·vue.js·ajax·typescript·reactjs
无奈ieq7 天前
spark——DAG专题
javascript·ajax·spark