• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

黄文超

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

promise封装ajax

promise封装ajax

Ajax是我们最常见的异步操作,如何用promise来封装我们的ajax呢?,代码如下
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>promise封装ajax</title>
</head>
<body>
<script>
    let myAjax = {
        post(url,params) {
            return new Promise((resolve, reject) =>{
                let xhr = new XMLHttpRequest()
                xhr.open('post',url)
                xhr.send(JSON.stringify(params))
                xhr.onreadystatechange = function () {
                    if (xhr.readyState === 4) {
                        if (xhr.status >=200 && xhr.status<300) {
                            resolve(xhr.response)
                        } else {
                            reject(xhr.status)
                        }
                    }
                }
            })
        },
        get(url,params) {
            return new Promise((resolve, reject) =>{
                let xhr = new XMLHttpRequest()
                if (Object.keys(params).length>=1) {
                    url += "?"
                }
                for (let key in params) {
                    url += ("key="+params[key] + "&")
                }
                url = url.substring(0,url.length-1)
                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)
                        }
                    }
                }
            })
        }
    }
    myAjax.post("https://api.apiopen.top/getJoke",{id:12})
    .then(value => {
        console.log(value)
    })
</script>
</body>
</html>

posted on 2021-11-17 16:30  黄文超  阅读(184)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3