xmlhttp是如何完成非同步操作的

2022-02-27 05:45:48 字數 1181 閱讀 5084

ajax第乙個字母就是asynchronous-非同步,那麼到底xmlhttp為何能支援非同步操作呢?

大家在使用ajaxpro的時候,經常這麼呼叫伺服器端方法

function dosomething()

function callback(res)

這樣在呼叫dosomething方法的時候,會很快返回,使用者可以繼續操作介面,直到**函式得到通知執行,再處理本次請求的結果。這就是一次非同步操作。

那是通過什麼樣的機制來完成對callback函式的通知的呢,xmlhttprequest物件支援一種onreadystatechange的委託,請求j狀態的更改會觸發這個委託。 http 就緒狀態表示請求的狀態或情形。它用於確定該請求是否已經開始、是否得到了響應或者請求/響應模型是否已經完成。它還可以幫助確定讀取伺服器提供的響應文字或資料是否安全。在 ajax 應用程式中需要了解五種就緒狀態:

0:請求沒有發出(在呼叫 open() 之前)。

1:請求已經建立但還沒有發出(呼叫 send() 之前)。

2:請求已經發出正在處理之中(這裡通常可以從響應得到內容頭部)。

3:請求已經處理,響應中通常有部分資料可用,但是伺服器還沒有完成響應。

4:響應已完成,可以訪問伺服器響應並使用它。

在ajax中最常用的就是狀態標誌4,**函式中發現狀態標誌為4的時候,就可以做處理請求資料的操作了。

比如建立xmlhttprequest的**如下:

}}發出xmlhttprequest並支援**函式的**如下: 

;callback函式就可以執行對請求資料的處理了。

xmlhttp是如何完成非同步操作的

ajax第乙個字母就是asynchronous 非同步,那麼到底xmlhttp為何能支援非同步操作呢?大家在使用ajaxpro的時候,經常這麼呼叫伺服器端方法 function dosomething function callback res 這樣在呼叫dosomething方法的時候,會很快返回...

Symbian中如何轉換非同步操作為同步操作

因為symbian中的乙個核心思想是利用單執行緒中的活動物件來實現多執行緒操作,所以我們經常會遇到很多操作是用活動物件完成的。大多數情況下,正如 symbian推薦的一樣,使用活動物件有很多好處,開銷更小,更快。但是,在實際操作中給開發者帶來的難度也不小,不過這也是嵌入式開發的乙個通病。最不可思議的...

Lan內部是如何完成通訊的

乙太網是資料鏈路層的一種通用協議,乙太網包的標頭里包含傳送方和接受方的mac位址。資料報裡存放ip 網路層 的東西。網路層的標頭里存放傳送方和接受方的ip位址,資料長度,資料報裡存放tcp udp 傳輸層 的東西 udp的表頭里存放傳送方和接受方的埠,tcp的話除此之外還會放置保證傳輸的各種屬性。傳...