2013-07-24 43 views
0

除了发送顺序外,两种AJAX请求在每种方式上都完全相同。当一个接一个地发送两个确切的AJAX请求时,返回顺序是否有所不同?

唯一的区别是功能在不同的时间执行。功能1,然后功能2.

示例伪代码。

function 1 { 
    $.getJSON(url , function(json_categories) { print json_categories + '1' }); 
} 

function 2 { 
    $.getJSON(url , function(json_categories) { print json_categories + '2' }); 
} 

我的问题是功能2打印功能1之前?

+0

是异步的是,你无法预知的原因,使用$就和做这个同步打这通电话同步:true – Sankara

回答

5

是的,任何回应都可以随时到达。涉及的变量很多,包括网络延迟和服务器负载。另外,JavaScript端没有任何东西可以强制执行某个特定命令,它们都是异步回调,只要响应到达,就会连接到异步回调模块

1

是的,因为这是一个异步调用。你调用URL并等待响应,这取决于许多你无法控制的变量。如果你想进行常规调用,请设置异步参数“false”(谨慎,它将被弃用,并将在未来的jQuery版本中被删除)。

+0

弃用的是将async:false与promise一起使用,而不是选项本身。同步请求的问题在于,它会阻止任何其他js的执行,直到响应到达(例如,无法在ui中提供视觉反馈)。 – bfavaretto

+0

我完全同意你的意见,如果亚伦需要它的话,这是提供信息的。 – Pouki

2

如果你需要等待两个请求返回使用jQuery的​​方法:

$.when($.getJSON(url1), $.getJSON(url2)).then(function (json_categories1, json_categories2) { ... }) 
相关问题