解决多个ajax页面请求,页面loading阻塞问题

Posted solatiry

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决多个ajax页面请求,页面loading阻塞问题相关的知识,希望对你有一定的参考价值。

在项目中碰到多个ajax加载,loading加载出现问题,没有能第一时间加载出来。

主要原因是因为:浏览器的渲染(UI)线程和js线程是互斥的,在执行js耗时操作时,页面渲染会被阻塞掉。当我们执行异步ajax的时候没有问题,但当设置为同步请求时,其他的动作(ajax函数后面的代码,还有渲染线程)都会停止下来。即使我的DOM操作语句是在发起请求的前一句,这个同步请求也会“迅速”将UI线程阻塞,不给它执行的时间。这就是代码失效的原因。

1.是把同步改写成异步,并且把多个ajax请求嵌套在一起。,在成功之后再去调用另外一个ajax请求,这样子就不会因为第一个请求先结束,把第二个请求loading给屏蔽掉。

 

 

2.是使用jquery的Deferred对象,jQuery在1.5版本之后,引入了Deferred对象,提供的很方便的广义异步机制。

详情可参看阮一峰老师的这篇文章http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html

3.用定时器setTimeout() 或者setinterval()函数去定时查看是否ajax都返回成功。

 

以上是关于解决多个ajax页面请求,页面loading阻塞问题的主要内容,如果未能解决你的问题,请参考以下文章

如何解决jquery+ajax 网页title总时显示成"正在等待..."

jQuery同步Ajax带来的UI线程阻塞问题及解决办法

jQuery中的ajaxjquery中ajax全局事件load实现页面无刷新局部加载ajax跨域请求jsonp利用formData对象向服务端异步发送二进制数据

jquery load加载页面内ajax返回的div不能响应页面js的问题的解决方案

ajax页面请求的做的留言板

Ajax的load方法演示