我写了第一个$ .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次获得同时被解雇,而我发现在前一次完成之后执行了... 既然是
$。获得
肯定是异步..
什么可能是错的? 我该怎么检查? 顺便说一句,serverside是经典的asp和请求在同一台机器上,可以从url看到。感谢任何提示
乔
答案 0 :(得分:4)
这四个请求是一个接一个地启动的,因为Javascript按顺序执行代码。在Javascript中没有实际的并行执行(它是单线程的 - 除了这里没有涉及的webWorkers)。
这里会发生的是,所有四个请求都将是"正在进行中"同时。确切地说,响应的回复取决于服务器的响应性。有些服务器一次只能处理一个请求,并且会使响应按顺序返回,即使它们都是一次启动的。其他服务器将以时间切片的方式处理它们(甚至使用多个处理器),以便所有响应在大约相同的时间完成。
您可以在操作之前打开Chrome调试器中的网络标签,然后查看其显示的时间跟踪,来验证发送请求的时间和接收响应。