promise封装ajax

发布时间:2022-06-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了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>

脚本宝典总结

以上是脚本宝典为你收集整理的promise封装ajax全部内容,希望文章能够帮你解决promise封装ajax所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: