Promise封装AJAX请求

 

 

 

 

 

复制可用

复制代码
 //  接口地址:http://poetry.apiopen.top/sentences (随机获取一句诗词)
    
        // 新建一个Promise对象
        const Pro = new Promise((resolve, reject) => {
            // 1.创建对象
            const xhr = new XMLHttpRequest();
    
            // 2.初始化,设置请求方式和接口地址
            xhr.open("GET", "http://api.tianapi.com/film/index?key=74cb68c12016c1e9508bf6d5f981a7be&num=10");
    
            // 3.发送请求
            xhr.send();
    
            // 4.绑定事件,处理响应结果
            xhr.onreadystatechange = function () {
                // 判断
                if (xhr.readyState === 4) {
                    // 判断响应状态码 200~299
                    if (xhr.status >= 200 && xhr.status < 300) {
                        // 获取成功
                        resolve(xhr.response);
                        // console.log(xhr.response);
                    } else {
                        // 获取失败
                        reject(xhr.status);
                        // console.log(xhr.status);
                    }
                }
            }
        });
    
        // 处理状态
        Pro.then((value) => {
            console.log("成功:", value);
        }, (reason) => {
            console.log("失败:", reason);
        })
    </script>
复制代码

 

去别人博客复制的 也是可以直接用

复制代码
let myAjax = {
            get() {
                return new Promise((resolve, reject) => {
                    //1,创建Ajax对象
                    let xhr = null;
                    if (window.XMLHttpRequest) {
                        xhr = new XMLHttpRequest();
                    } else { //兼容低版本ie浏览器
                        xhr = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                 //2,建立服务器链接
                    let url = "http://api.tianapi.com/film/index?key=74cb68c12016c1e9508bf6d5f981a7be&num=10";
                    xhr.open("GET", url, true);
                    //3,发送请求
                    xhr.send(null);
                    //4,监听Ajax对象状态变化
                    xhr.onreadystatechange = function() {
                        if (this.readyState == 4 && this.status == 200) {
                            resolve(this.responseText);
                        }
                    }
                });
            }
        }
        myAjax.get().then((res) => {
            let data = JSON.parse(res);
            data.newslist.forEach((v) => {
                console.log(v["title"]);
            });
        }).catch((err) => {
            console.log(err);
        });
复制代码

 

posted @   罗砂  阅读(68)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示