2015-09-04 112 views
1

當你做這樣的事情異步XMLHttpRequest send()在所有數據發送之前返回?

xmlhttp.open("GET","ajax_info.txt",true); 
xmlhttp.send(); 

在send()函數觸發一個線程(或類似的東西)來同時發送HTTP消息,或發送,然後只有在所有的數據發送返回?

+0

首先,Ajax是一種技術,XHR對象就像API一致的類型實例......當您向資源(uri,endpoints)發送請求時。客戶端和服務器之間的連接(流)被建立,並且它一直保持打開狀態,直到它關閉。如果您詢問建立的連接是否保持打開狀態,直到所有數據都發送完畢,答案是連接可以被切斷事情;在響應被緩衝時,流可以被用戶代理/客戶端關閉......這是暫定的,但是當服務器寫入所有數據時,服務器將關閉流。我會找到規格。 –

+0

好的。更具體。我有一堆字節通過套接字連接發送,對吧?如果在send()返回後,我做了類似formfield.value =「」的操作,是否有丟失這些字節的風險? ? – matheuscscp

+0

您的意思是如果您在發送請求後在下一個語句中修改表單域變量? –

回答

0

xmlhttp.send()永遠不會返回,它是無效,它只能使請求到服務器,您創建的XMLHTTP對象有一個名爲的onreadystatechange方法,該方法被調用時,你的異步請求成功或失敗,反正你的應用程序流程沒有被破壞,它繼續下去。 https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest

+0

哈哈,所以void函數不會返回?他們不終止?哈哈哈。 此答案無效。我詢問send()函數是否在所有TCP套接字完成之前終止。 – matheuscscp

相關問題