zoukankan      html  css  js  c++  java
  • promise 封装 axios

    /*axios({
      method:"get",
      url:"./data.json",
      data:{
        id:10
      }
    }).then((res)=>{
      console.log(res)
    },(e)=>{
      console.log(e);
    })*/

    function axios(options) {
      let promise = new Promise((resolve, reject) => {  
        var xhr = new XMLHttpRequest();
        var data = "";
        //数据处理

        for (var key in options.data) {
        data += "&" + key + "=" + options.data[key]
        }

        if (options.method == "get") {

          let url = options.url + "?" + data.slice(1);
          xhr.open(options.method, url);
          xhr.send();
        } else if (options.method == "post") {

          xhr.open(options.method, options.url);
          xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");
          xhr.send(data);
        }


        xhr.onreadystatechange = function () {
          let timer = null;
          let timeout = options.timeout?options.timeout:5000
          if(xhr.readyState == 4 && xhr.status == 200){
            let res = JSON.parse(xhr.responseText);
            clearTimeout(timer);
            resolve(res);
          }

         timer = setTimeout(()=>{
           clearTimeout(timer);
              reject(xhr.status);
            },timeout)

        }
      })
      return promise;
    }

  • 相关阅读:
    构建可靠的系统
    netty详解之reactor模型
    netty详解之io模型
    小明的魔法调度框架之旅
    JAVA版-微信高清语音.speex转.wav格式
    Spring Data JPA 缓存结合Ehcache介绍
    @media print样式 关于table断页
    JBPM学习第6篇:通过Git导入项目
    JBPM学习第5篇:Mysql配置
    JBPM学习第4篇:10分钟熟悉Eclipse
  • 原文地址:https://www.cnblogs.com/wangqi2019/p/10543395.html
Copyright © 2011-2022 走看看