for (var i = 0; i < 100; i++) { $.get(‘http://localhost’, { id:123}, function(res){}); } 例如这样的代码,浏览器是同时请求的吗?
理论上是同时的
不是,浏览器会另起线程来发起http请求,请求完成后会把回调函数塞到事件队列里面进行
并发,代码中的匿名函数 function(res){}
就是回调用的了
建议lz看看这篇文章:http://elseif.me/archives/103
谢谢。
$.get(url, { async: false/true }, callback) async默认是true
并发,不过也受同一域名的最大连接数限制。
ajax是异步请求的
这能说浏览器端是并发的,服务器端可能会有限制,我写过这类脚本,被坑惨了,看似并发发送请求,服务器却是一个一个返回,并发的6个ajax,因为处理时间比较长,全是挂起,一个处理返回,下一个才被处理。
你并没有用Worker创建进程,本质上并不是并发, 只有一个js进程。
ajax中的js只是连续执行了$.get()函数里边的代码, 而get内部的tcp通信,则是由操作系统与目标打交道, 操作系统是支持并发的, 如果前边的没有响应完, 后边的可以继续并发。
跟 new Worker(‘a.js’)使用js子进程是不一样的。
那是因为你没有设置异步,ajax既可以同步也可以异步, 同步则是要等待操作系统返回结果再运行。