原生Ajax详解--同步与异步

1:页面加载的同步与异步(白屏与不刷新)

a:普通的页面效果:w3school.org
b:页面不刷新效果:评论加载

2:描述两者的行为方式

a:同步 彼此等待-----阻塞(白屏)
b:异步 各做各的--------非阻塞(保持原有页面)

3对异步的通俗理解

4异步效果与js事件处理的机制

js事件处理机制:单线程+事件队列
事件队列:
a:定时函数 setTimeout() 和setInterval()

<script>
        console.log(1);
        setTimeout(function(){
            console.log(2);
        },1000);
        var sum=0;
        for(let i=0;i<1000000;i++){
            sum+=i;
        }
        console.log(sum);
        console.log(3); 
    </script>
输出顺序1 sum 3 2

b:事件函数 btn.onclick=function(){}

window.onload=function(){
            var btn=document.querySelector('#btn');
            console.log(1)
            btn.onclick=function(){
                console.log(this.value);
            }
            console.log(2);
        }
<input type="button" value="点击" id="btn">
输出顺序:1  2   点击(点击按钮时触发)

c:ajax回调函数 xhr.onreadystatechange=function(){}

window.onload=function(){
        var btn=document.querySelector('#btn');
        btn.onclick=function(){
            var xhr=null;
            if(window.XMLHttpRequest){
                xhr=new XMLHttpRequest(); 
            }else{
                xhr=new ActiveXObject('Microsoft.XMLHTTP');
            }
            xhr.open('get','',true);
            xhr.send(null);
            console.log(1);
            xhr.onreadystatechange=function(){
                if(xhr.readyState==4){
                    if(xhr.status==200){
                        var data=xhr.responseText;
                        var obj=JSON.parse(data);
                        var tag='<div><span>'+obj.info+'</span>----------<span></span><span>'+obj.message+'</span></div>';
                        var info=document.querySelector("#info");
                        info.innerHTML=tag;
                        console.log(2);
                    }
                }
            }
            console.log(3);
        }
     }
输出顺序:1    3     2

事件队列中的任务执行的条件:
a:主线程已经空闲
b:任务满足触发条件:
(1)定时函数(延迟时间已经达到)
(2)事件函数(特定事件被触发。譬如:点击)
(3)ajax回调函数(服务器端有数据响应)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容