利用Promise对原生ajax进行封装-对jQuery的ajax进行封装

一、利用Promise对原生ajax进行封装

function ajax({
    method = 'get',
    url = "",
    params = ""
}) {
    const p = new Promise((resolve, reject) => {
        var xhr = new XMLHttpRequest();
        if (method == "get" && params != undefined) {
            url = url + "?" + params;
        }
        xhr.open(method, url, true);
        xhr.onreadystatechange = function() {
            if (this.status == 200 && this.readyState == 4) {
                resolve(this.responseText); //服务器给了正确的响应
            }
        };
        if (method == "post" && params != undefined) {
            xhr.send(params);
        } else {
            xhr.send();
        }
    });
    return p;
}

二、对jQuery的ajax进行封装

//用对jQuery的ajax进行封装
function http({
    url = '', //请求地址
    type = 'get', //请求方式,默认get
    data = {} //请求传递的数据
}) {
    const p = new Promise((resolve, reject) => {
        $.ajax({
            url,
            type,
            data,
            dataType: 'json',
            success: function(res) {
                resolve(res['list']);
            },
            error: function(err) {
                reject(err);
            }
        });
    });
    return p;
}

你可能感兴趣的:(方法,总结一些相关面试题,javascript,jquery,前端,ajax,面试)