手写promise版本ajax

来源:互联网 发布:美国驾照在中国 知乎 编辑:程序博客网 时间:2024/05/16 06:06
// ajax函数将返回Promise对象:
function ajax(method, url, data) {
    var request = new XMLHttpRequest();
    return new Promise(function (resolve, reject) {
        request.onreadystatechange = function () {
            if (request.readyState === 4) {
                if (request.status === 200) {
                    resolve(request.responseText);
                } else {
                    reject(request.status);
                }
            }
        };
        request.open(method, url);
        request.send(data);
    });
}


var log = document.getElementById('test-promise-ajax-result');
var p = ajax('GET', '/api/categories');
p.then(function (text) { // 如果AJAX成功,获得响应内容
    log.innerText = text;
}).catch(function (status) { // 如果AJAX失败,获得响应代码
    log.innerText = 'ERROR: ' + status;

});


如果你想详细了解promise:  http://www.jianshu.com/p/05de7c1ef080

如果你想了解promise与ajax:  http://www.cnblogs.com/284628487a/p/5556144.html

原创粉丝点击