微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

promise——使用函数通过promise包装发送ajax请求

1.代码

<!DOCTYPE html>
<html lang="en">
  <head>
    <Meta charset="UTF-8" />
    <Meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <Meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>AJAX POST 请求</title>
    <style>
      #result {
        width: 200px;
        height: 100px;
        border: solid 1px #90b;
      }
    </style>
  </head>
  <body>
    <button>点击发送</button>
    <div id="result"></div>
  </body>
  <script>
    const result = document.getElementById("result");
    const btn = document.getElementsByTagName("button")[0];
    function sendAJAX(url) {
      return new Promise((resolve, reject) => {
        const xhr = new XMLHttpRequest();
        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);
            }
          }
        };
      });
    }
    btn.addEventListener("click", () => {
      sendAJAX("https://api.apiopen.top/getJoke").then(
        (value) => {
          result.innerHTML = value;
        },
        (reason) => {
          console.log(reason);
        }
      );
    });
  </script>
</html>

2.代码讲解

function sendAJAX(url) {
  return new Promise((resolve, reject) => {
    const xhr = new XMLHttpRequest();
    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);
        }
      }
    };
  });
}
  1. 自定义一个方法方法返回一个Promise对象
btn.addEventListener("click", () => {
  sendAJAX("https://api.apiopen.top/getJoke").then(
    (value) => {
      result.innerHTML = value;
    },
    (reason) => {
      console.log(reason);
    }
  );
});
  1. 给按钮添加事件监听程序,当点击的时候,使方法返回的Promise执行then方法,并给promise对象赋值箭头函数,成功发送ajax并返回值

3.运行结果

在这里插入图片描述

点击后:

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐