封装一个promise的异步请求

封装一个promise的异步请求

let ajax = function(options) {
        function formatParams(obj) {
            var arr = [];
            for (var attr in obj) {
                arr.push(encodeURIComponent(attr) + '=' + encodeURIComponent(obj[attr]))
            }
            arr.push('t=' + new Date().getTime())
            return arr.join('&');
        }

        // 定义一个Promise对象
        return new Promise((resolve, reject) => {
            //第一步设置ajax对象
            if (window.XMLHttpRequest) {
                // ie6以外支持
                var xhr = new XMLHttpRequest();
            } else {
                // 仅ie6支持
                var xhr = new ActiveXObject('Microsoft.XMLHTTP');
            }
            // 第二步设置请求方式和请求地址
            // true 是异步请求    false是同步
            if (options.type.toLowerCase() == 'get') {
                xhr.open('get', options.url + '?' + formatParams(options.data), true);
            } else if (options.toLowerCase() == 'post') {
                xhr.open('get', optinos.url, true);
                xhr.setRequestHeader('content-type', 'applaction/json');
            }
            // 第三步发送数据
            xhr.send(options.data);
            // 第四步监听并响应
            xhr.onreadystatechange = function() {
                if (xhr.readyState != 4) return;
                if (xhr.readyState == 4 && xhr.status == 200) {
                    resolve(xhr.responseText);
                } else {
                    reject('服务器异常')
                }
            }
        })
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值