jquery $.when 和同步请求问题
jquery $.when and Simultaneous request issue
我写了第一个 $.when 例程,但没有按预期工作:
$(document).ready(function ()
{
var UserUrl = 'API/StartGetUser.asp';
var StoreUrl = 'API/StartGetStore.asp';
var FeedbackUrl='API/StartGetFeed.asp';
var ItemsUrl='API/StartGetSellers.asp';
$.when(
$.get(UserDetailsUrl),
$.get(StoreCategoryUrl),
$.get(FeedbackUrl),
$.get(ItemsUrl)
).then(function(user,store,feed,items) {
//$.get(mailUrl)
alert(user+' '+store+' '+feed+' '+items);
}).fail(function(err) {
alert(err);
});
它有效,但我原以为 4 个 get 会同时触发,而我发现在前一个完成后执行一个...
因为是
$.get
肯定是异步的..
有什么问题吗?
我应该检查什么?
顺便说一句,服务器端是经典的 asp 并且请求在同一台机器上,从 url 可以看出。
感谢任何提示
乔
这四个请求是一个接一个发起的,因为Javascript是顺序执行代码的。 Javascript 中没有实际的并行执行(它是单线程的 - 除了此处未涉及的 webWorkers 之外)。
这里会发生的是所有四个请求将同时 "in process"。响应返回的确切时间取决于服务器的响应能力。有些服务器一次只会处理一个请求,并且会导致响应按顺序返回,即使它们都是一次启动的。其他服务器将以时间片方式(甚至使用多个处理器)处理它们,以便所有响应几乎同时完成。
您可以在操作前打开 Chrome 调试器中的网络选项卡,然后查看它显示的时间轨迹,以验证发送请求和接收响应的时间。
我写了第一个 $.when 例程,但没有按预期工作:
$(document).ready(function ()
{
var UserUrl = 'API/StartGetUser.asp';
var StoreUrl = 'API/StartGetStore.asp';
var FeedbackUrl='API/StartGetFeed.asp';
var ItemsUrl='API/StartGetSellers.asp';
$.when(
$.get(UserDetailsUrl),
$.get(StoreCategoryUrl),
$.get(FeedbackUrl),
$.get(ItemsUrl)
).then(function(user,store,feed,items) {
//$.get(mailUrl)
alert(user+' '+store+' '+feed+' '+items);
}).fail(function(err) {
alert(err);
});
它有效,但我原以为 4 个 get 会同时触发,而我发现在前一个完成后执行一个... 因为是
$.get
肯定是异步的..
有什么问题吗? 我应该检查什么?
顺便说一句,服务器端是经典的 asp 并且请求在同一台机器上,从 url 可以看出。
感谢任何提示
乔
这四个请求是一个接一个发起的,因为Javascript是顺序执行代码的。 Javascript 中没有实际的并行执行(它是单线程的 - 除了此处未涉及的 webWorkers 之外)。
这里会发生的是所有四个请求将同时 "in process"。响应返回的确切时间取决于服务器的响应能力。有些服务器一次只会处理一个请求,并且会导致响应按顺序返回,即使它们都是一次启动的。其他服务器将以时间片方式(甚至使用多个处理器)处理它们,以便所有响应几乎同时完成。
您可以在操作前打开 Chrome 调试器中的网络选项卡,然后查看它显示的时间轨迹,以验证发送请求和接收响应的时间。