2012-11-21 25 views
3

下面是代碼:jQuery.ajax()的「成功」回調可以將兩個調用區分開來嗎?

$.ajax({ 
     url: "script.php", 
      success : oneHandler 
     }); 

$.ajax({ 
     url: "script.php", 
      success : twoHandler 
     }); 

當調用這兩個函數調用同時是確保「oneHandler」真的叫在第一次調用的響應? 換句話說,是否檢查了匹配的附加字符串?

如果我添加數據:

dataType: 'json', 
data: {"json": "one"} , 

dataType: 'json', 
data: {"json": "two"} , 

分別?

如果我使用post方法怎麼辦?

回答

1

當同時調用這兩個函數調用時,確保在第一次調用的響應中真正調用了「oneHandler」?

如果我用什麼方法後?

沒關係。它肯定會調用正確的回調函數

2

當然,JavaScript是瀏覽器中的單線程模型,不存在真正的併發;只有非常接近。

在內部,通過$.ajax和朋友爲每個請求創建一個對象;此對象是與服務器通話並接收響應的對象。您的成功回調附加到該對象。

由於每個請求都是一個單獨的對象,因此可以保證執行正確的回調。請注意,多個請求可以同時共存,它們不會等待彼此完成;如果你想要的話,你可以使用Deferred.pipe

+0

爲了確保我的理解正確:當瀏覽器發送一個http請求時,它將等待下一個請求,直到答案已經返回或者我們有超時?我寧願想象http的答案是以某種方式被識別出來的,並被分配給「內部對象」? –

+0

@Konstantin否,多個請求可以同時存在;他們不會彼此等待(除非你特別這麼說)。 –

相關問題