通过Promise对象实现一个ajax

在前端开发中,使用Promise对象来封装一个基础的AJAX请求是一个常见的做法,这有助于我们更好地处理异步操作。以下是一个简单的示例,使用原生的JavaScript和Promise来创建一个AJAX函数:

function ajax(url, method = 'GET', data = null) {
    return new Promise((resolve, reject) => {
        const xhr = new XMLHttpRequest();
        xhr.open(method, url, true);

        // 设置请求头,如果是POST请求的话
        if (method === 'POST') {
            xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        }

        xhr.onload = function () {
            if (this.status >= 200 && this.status < 300) {
                // 请求成功,解析响应内容
                resolve(JSON.parse(this.responseText));
            } else {
                // 请求失败,返回错误信息
                reject({
                    status: this.status,
                    statusText: this.statusText
                });
            }
        };

        xhr.onerror = function () {
            // 网络错误等
            reject({
                status: this.status,
                statusText: this.statusText
            });
        };

        // 发送请求
        if (method === 'POST' && data) {
            xhr.send(data);
        } else {
            xhr.send();
        }
    });
}

// 使用示例:
ajax('https://api.example.com/data', 'GET')
    .then(response => {
        console.log('请求成功:', response);
    })
    .catch(error => {
        console.error('请求失败:', error);
    });

这个ajax函数接受三个参数:url(请求的URL),method(请求方法,默认为'GET'),和data(发送到服务器的数据,默认为null)。函数返回一个Promise对象,该对象在请求成功时解析为响应内容,在请求失败时拒绝并返回错误信息。

posted @ 2024-12-26 09:55  王铁柱6  阅读(22)  评论(0)    收藏  举报