Promise+ajax && async+await+promise+ajax

Peomise+Ajax

//创建XHR对象
function creatXHR() {
    var xhr;
    if(window.XMLHttpRequest){
            xhr = new window.XMLHttpRequest();
    }else if(window.ActiveXObject('MicrosoftXMLHTTP')){
            xhr = new ActiveXObject();
    }else{
            console.log('your brower can not support XMLHttpRequest');
    }
    return xhr;
}

function getAjax(url) {
    var xhr = creatXHR();
    return new Promise(function (resolve,reject) {
        xhr.onreadystatechange = function () {
            if(xhr.readyState == 4){
                if(200 <= xhr.status <= 304){
                    resolve(xhr.responseText);
                }else{
                     reject('error reject');
                }
            }
        };
        xhr.open('GET',url);
        xhr.send(null);
        });
}
getAjax('data.js').then(function (msg) {
    console.log(msg);
});

async+await+promise+ajax

<!DOCTYPE html>
<html lang="en">
<head>
    <Meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div class="scriptText"></div>
<script> var url = 'http://o4j806krb.qnssl.com/public/index.min.aeb155e1.min.js'; var xhr = new XMLHttpRequest(); var text; function getScript(url) { return new Promise(function (resolve,reject) { xhr.onreadystatechange = function () { if(xhr.readyState === 4 && xhr.status === 200){ text = xhr.responseText; resolve(xhr.responseText); } }; xhr.open('GET',url); xhr.send(null); }); } var processMessage = function(url) { var ele = document.getElementsByClassName('scriptText')[0]; getScript(url); ele.innerHTML = text; }; var processMessageAsync = async function(url) { var ele = document.getElementsByClassName('scriptText')[0]; await getScript(url);//await必须在async环境中 ele.innerHTML = text; }; processMessage(url);//这里测试不用async时的情况,页面显示undefined setTimeout(function () { processMessageAsync(url);//3s后页面显示获取到的内容 },3000); //上面ajax能跨域获取数据的原因是o4j806krb.qnssl.com服务器将其资源的CORS设置为acces-control-allow-origin为* </script>
</body>
</html>

相关文章

JS原生Ajax操作(XMLHttpRequest) GET请求 POST请求 兼容性问题 利用iframe模拟ajax 实现表单提交的返回...
AJAX 每日更新前端基础,如果觉得不错,点个star吧 &#128515; https://github.com/WindrunnerMax/E...
踩坑Axios提交form表单几种格式 前后端分离的开发前后端, 前端使用的vue,后端的安全模块使用的SpringSe...
很早就听闻ajax的名声,但是却一直不知道怎么用,今天自己捣鼓了一下,竟然会用了,哈哈哈哈。 为了防止...
需要在服务器上进行哈 jquery的ajax方法: // jquery请求 $.ajax({ url: &quot;./server/slider.js...
Ajax函数封装ajax.js // Get / Post // 参数 get post // 是否异步 // 如何处理响应数据 // URL // var...