基于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>
相关推荐
渴望成为python大神的前端小菜鸟1 小时前
浏览器及其他 面试题
前端·javascript·ajax·面试题·浏览器
chilavert31810 小时前
技术演进中的开发沉思-235 Ajax:动态数据(上)
javascript·ajax·okhttp
1024肥宅2 天前
手写 Promise:深入理解 JavaScript 异步编程的核心
前端·javascript·promise
chilavert3183 天前
技术演进中的开发沉思-228 Ajax: Aptana开发
前端·javascript·ajax
士心凡3 天前
Spark
大数据·ajax·spark
beijingliushao4 天前
100-Spark Local模式部署
大数据·python·ajax·spark
www_stdio5 天前
深入理解 Promise 与 JavaScript 原型链:从基础到实践
前端·javascript·promise
之恒君5 天前
PromiseResolveThenableJobTask 的在Promise中的使用
javascript·promise
by__csdn5 天前
Ajax与Axios终极对比指南全方位对比解析
前端·javascript·ajax·okhttp·typescript·vue·restful
by__csdn5 天前
Vue3+Axios终极封装指南
前端·javascript·vue.js·http·ajax·typescript·vue