首页 > 其他分享 >Promise封装AJAX请求

Promise封装AJAX请求

时间:2023-02-11 10:00:35浏览次数:35  
标签:status 封装 log xhr AJAX Promise new console

 

 

 

 

 

复制可用

 //  接口地址: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);
        });

 

标签:status,封装,log,xhr,AJAX,Promise,new,console
From: https://www.cnblogs.com/0722tian/p/17110918.html

相关文章

  • 手写一个带拦截器的ajax请求
    ajax<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metahttp-equiv="X-UA-Compatible"content="IE=edge"/><metaname="viewpor......
  • .Net Core对于`RabbitMQ`封装分布式事件总线
    首先我们需要了解到分布式事件总线是什么;分布式事件总线是一种在分布式系统中提供事件通知、订阅和发布机制的技术。它允许多个组件或微服务之间的协作和通信,而无需直接耦......
  • Day 89 Django_视图封装 & 路由 & 版本控制组件
    视图封装model.py文件fromdjango.dbimportmodels#Createyourmodelshere.classBook(models.Model):title=models.CharField(max_length=32,verbo......
  • Promise使用
    ECMAscript6原生提供了Promise对象。Promise对象代表了未来将要发生的事件,用来传递异步操作的消息。Promise对象有以下两个特点:1、对象的状态不受外界影响。Prom......
  • Promise封装读取文件
     //1.引入fs模块constfs=require('fs')//2.调用方法读取文件fs.readFile('./ES6/CCTV.md',(err,data)=>{//如果失败,则抛出错误if(err)throwerr;......
  • 好客租房155-封装顶部导航栏组件(2样式调整)
    .navbar{//组件应该保持默认的基本样式,对于页面单独需要的样式,在页面中单独指定就可以了//margin-top:-45px;color:#333;background-color:#f6f5f6;......
  • 好客租房154-封装顶部导航栏组件(1顶部导航栏)
    1封装NavHeader组件实现城市选择地图找房页面的复用2在component目录中创建NavHeader/index.jsimportReactfrom'react'import{NavBar}from'antd-mobile'exportdef......
  • 好客租房156-封装顶部导航栏组件(3功能处理withRouter)
    importReactfrom'react'import{NavBar}from'antd-mobile'//导入withRouter高阶组件import{withRouter}from'react-router-dom'import"./index.scss"funct......
  • 好客租房157-封装顶部导航栏组件(4添加props校验)
    添加props校验导入propTypesimportReactfrom'react'import{NavBar}from'antd-mobile'//导入withRouter高阶组件import{withRouter}from'react-router-dom'/......
  • Promise构造函数
    介绍Promise是ES6引入的异步编程的新解决方案,语法上Promise是一个构造函数,用来封装一步操作并可以获取其成功或失败的结果。1.Promise构造函数:Promise(excutor){}2.P......