Promise--实践练习之AJAX请求 & Promise封装AJAX操作

Posted Z && Y

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Promise--实践练习之AJAX请求 & Promise封装AJAX操作相关的知识,希望对你有一定的参考价值。

1. Promise–实践练习之AJAX请求


1.1 实践练习之AJAX请求


请求规则:

  • 如果请求成功(状态码为2xx => 则打印出响应体)
  • 如果请求失败(打印出状态码)

页面结构:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Promise 封装 AJAX</title>
    <link crossorigin='anonymous' href="https://cdn.bootcss.com/twitter-bootstrap/3.3.7/css/bootstrap.min.css"
          rel="stylesheet">
</head>
<body>
<div class="container">
    <h2 class="page-header">Promise 封装 AJAX 操作</h2>
    <button class="btn btn-primary" id="btn">点击发送 AJAX</button>
</div>
<script>
</script>
</body>
</html>

在这里插入图片描述

JS实现代码:

 //接口地址 http://a.itying.com/api/productlist

    // 获取元素对象
    const btn = document.querySelector('#btn');
    //  绑定点击事件
    btn.addEventListener('click', () => {
        //    创建Promise
        new Promise((resolve, reject) => {
            //    1. 创建对象
            const xhr = new XMLHttpRequest();
            //    2. 初始化
            xhr.open('GET', 'http://a.itying.com/api/productlist');
            //    3. 发送请求
            xhr.send();
            //    4. 处理响应结果
            xhr.onreadystatechange = () => {
                if (xhr.readyState === 4) {
                    //判断响应状态码 2xx 响应成功
                    if (xhr.status >= 200 && xhr.status < 300) {
                        //控制台输出响应体
                        resolve(xhr.response);
                    } else {
                        //控制台输出响应状态码
                        reject(xhr.status);
                    }
                }
            }
        }).then(value => {
            console.log(value)
        }, reason => {
            //  console.warn(str) 以警告的形式打印str => 加一个黄色背景
            console.warn(reason);
        })
    })

在这里插入图片描述


1.2 Promise封装AJAX操作

    //接口地址 http://a.itying.com/api/productlist

    /**
     * 封装一个函数 sendAJAX 发送 GET AJAX 请求
     * 参数   URL
     * 返回结果 Promise 对象
     */
    function sendAJAX(url) {
        return new Promise((resolve, reject) => {
            const xhr = new XMLHttpRequest();
            // 把返回的数据设置成为Json格式
            xhr.responseType = 'json';
            xhr.open("GET", url);
            xhr.send();
            //处理结果
            xhr.onreadystatechange = function () {
                if (xhr.readyState === 4) {
                    //判断成功
                    if (xhr.status >= 200 && xhr.status < 300) {
                        //成功的结果
                        resolve(xhr.response);
                    } else {
                        reject(xhr.status);
                    }
                }
            }
        });
    }

    sendAJAX('http://a.itying.com/api/productlist').then(value => {
        console.log(value);
    }, reason => {
        console.warn(reason);
    });

在这里插入图片描述



以上是关于Promise--实践练习之AJAX请求 & Promise封装AJAX操作的主要内容,如果未能解决你的问题,请参考以下文章

ajax练习之登录

python进阶练习之——按位与

ES6 从入门到精通 # 18:使用 Promise 封装 ajax

ES6 从入门到精通 # 18:使用 Promise 封装 ajax

Linux脚本练习之script085-nginx日志分析之统计每分钟的请求数

Linux脚本练习之script085-nginx日志分析之统计每分钟的请求数