ajax 是真的异步?还是伪异步?

elezone 2012-05-04 05:58:59
在web开发中遇到一个问题,设置ajax超时时间为0,即不超时,当用ajax异步请求服务器端数据的时候由于服务器处理时间较长,当服务器还没有返回结果的时候如果想通过超链接访问别的服务器页面是不给响应的,即你怎么点也无反应,虽然当前页面的一些控件可以点。那么ajax是不是只是当前页面的一个异步请求?在ajax没有得到结果的时候是不能跳转到别的页面么?
...全文
413 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
maquan 2012-05-08
  • 打赏
  • 举报
回复
主流浏览器并发连接数

“浏览器默认对同一域下的资源,只保持一定的连接数,会阻塞过多的连接。”

以上供参考。不一定是这个原因,因为即使有连接数的限制,至少也是 2。也许页面中还有另外一个同域的请求一直占据着连接……
elezone 2012-05-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

楼主能确定你的试验结果吗?

我在 IE 8.0 和 Chrome 17.0 下都做了测试,没有你说的“不能跳转到别的页面”的问题。无论是本页签跳转还是弹出新页签,都没问题。

AJAX 肯定是“真异步”,这个没问题,它的意思是:HTTP 请求发出后,不用等待返回结果,程序下滑,继续执行其它的内容。

就我所知,有两个因素可能导致“阻塞”的现象:

1. 一个页面里只能有一个线程……
[/Quote]

3楼说的有道理,我又重新用ie9及chrome 12测了一次,这次页面中放了两个超链接,一个是链接到baidu首页的,一个是链接到本服务器的一个页面,同样是在ajax发送请求等待数据返回的过程(ps:我在服务器端处理请求返回数据的程序中加了等待10秒钟的代码)中分别点击两个超链接,但结果会不同,点击链接到baidu的超链接是可以立即跳转的,但点击跳转到本服务器的页面的时候是不会立即跳转,要等服务器返回数据后才跳转。不知道浏览器内部的实现机制是怎样的。
snow-is-my-Love 2012-05-05
  • 打赏
  • 举报
回复
真异步
maquan 2012-05-04
  • 打赏
  • 举报
回复
楼主能确定你的试验结果吗?

我在 IE 8.0 和 Chrome 17.0 下都做了测试,没有你说的“不能跳转到别的页面”的问题。无论是本页签跳转还是弹出新页签,都没问题。

AJAX 肯定是“真异步”,这个没问题,它的意思是:HTTP 请求发出后,不用等待返回结果,程序下滑,继续执行其它的内容。

就我所知,有两个因素可能导致“阻塞”的现象:

1. 一个页面里只能有一个线程用来跑 js 引擎,尽管事件驱动的 js 代码看上去很像是“多线程”的。

2. 貌似浏览器会对所有的 HTTP 请求进行排队处理,而能够并发处理这个队列的线程数是有限制的。老版本的 IE 浏览器好像有这个问题(曾经有一个所谓的“浏览器加速”的方法就是调大这个并发数),但是其它版本如何我就不是很清楚了。


————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
elezone 2012-05-04
  • 打赏
  • 举报
回复
实际我用抓包工具抓包得出的结果是在ajax没有得到服务器响应的时候我请求别的页面的get报文是不会发出去的。现在才明白ajax设置超时时间的作用了。

52,792

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧