同步与异步的区别
同步
1.当你去访问一个网站时,只要服务器不给你返回数据,那么你只有等待,等到服务器的数据给你返回数据了才能看到页面,没有返回,只能"无尽的"等待,等待的过程中,很多时候都会出现白屏的现象,要是时间过长,就不会再等待了,传统的同步请求,对于用户体验不太友好,为了增强用户体验,所以就有了异步请求
异步
特点: "异步加载 局部更新"
1.假如服务器没有找到数据,那么就不等待,去干别的事情,异步请求的底层都是基于Ajax或跨域的方式来实现功能特效,原生的Ajax实现页面局部更新的核心就是,在请求服务端的时候,返回的内容仅仅是一段文本或者代码,只操作一部分的页面,没必要进行整个页面的解析,如果说文件太大,这种时候明显会减少带宽,效率也会明显的提高,采用异步的方式,从后台传递的数据明显降低,请求的效率明显提高
两者之间的行为
同步:"阻塞"
彼此等待,这里的彼此指的是浏览器与服务器端的Apache,当年在请求的过程中,如果说Apache或者与Apache类似的应用软件不给你响应相应的数据,只能"阻塞"(页面卡顿)
异步:"不阻塞"
当我们访问一个网站时,比如像新闻资讯类的网站,底部都会有"加载更多"的字样,当我们点击"加载更多"的时候,服务器响应的比较慢,但这个时候页面不会刷新,不会显示白屏,这样用户的体验也会大大的提高
异步的过程解析
领导想找小杨汇报一下工作
1.领导告诉秘书去把小杨给叫过来
2.领导接着干别的事情
3.秘书去叫小杨
4.秘书带小杨见领导
5.秘书告诉领导小杨来啦
6.小杨跟领导汇报工作
浏览器Ajax请求服务端
1.浏览器让xhr去跟服务器要点数据
2.浏览器接着干别的事情
3.xhr去向服务器请求数据
4.服务器返回数据给xhr
5.xhr通知浏览器数据已接收到了
6.浏览器收到xhr返回的数据渲染页面