我有两个连续的Async Ajax调用,如下所示,当我执行时,我希望'1st complete'将打印,如果它花费的时间少于call2(id = 2)反之亦然'2nd complete'将打印如果它花费的时间少于call1(id = 1)。 但是,我观察到第二个呼叫始终等待第一个呼叫完成。与Async混淆。请帮忙。
$(function(){
jQuery.ajax({
url: 'Home/getItem',
data : { id : 1 },
async:true,
success: function(){ console.log('1st complete'); }
}),
jQuery.ajax({
url: 'Home/getItem',
data : { id : 2 },
async:true,
success: function(){ console.log('2nd complete'); }
})
});
当我使用核心php检查相同的功能时,它会返回预期的结果。
答案 0 :(得分:2)
你看到这样的输出是因为;几乎在每个服务器端技术中都有一个会话管理。现在假设您的getItem
函数/方法执行某些工作并更新会话对象。因此,默认情况下,服务器始终阻止concurrent
同一用户调用同一服务器端方法。如果第一个请求正在进行,那么第二个请求将被推送到队列中。一旦第一次请求完成;挂起的请求被执行。通过这种方式,第一个请求修改的session state
将可用于第二个请求,依此类推。
在.Net技术中,有一些注释使控制器/方法会话无法识别,因此可以进行并发的ajax调用。通过这些注释,我们声明相关的控制器/方法不处理会话状态,因此可以同时调用。
您可以在下面的问题中阅读更多相关信息:
同样,PHP中必须有一些东西。尝试搜索它,你就会得到线索。