所謂單執行緒,是指負責解釋並執行js**的執行緒只有乙個。我們不妨叫它主線程。
其實還有其他很多執行緒的,比如進行ajax請求的執行緒、監控使用者事件的執行緒、定時器執行緒、讀寫檔案的執行緒(例如在nodejs中)等等。
同步和非同步是怎麼回事?以ajax請求為例:
非同步
就是:主線程執行到傳送ajax請求的**時,通知負責處理ajax請求的執行緒(不妨叫做ajax執行緒):「你給我發個請求吧,我把請求位址和引數都給你了」。然後主線程就不管這事兒了,繼續執行後面的**。等ajax執行緒收到http響應的時候,就通知主線程:「你的響應來了,快來取吧」。主線程在合適的時候就會去取響應,進行適當的處理。
多說一句:ajax執行緒通知主線程的方式就是所謂的事件佇列和事件迴圈機制。
同步
就是:主線程執行到傳送ajax請求的**時,它還是要通知ajax執行緒幫它發請求,但是它也停下來,啥都不幹,等著接收響應。如果響應5秒後才拿到,那麼他就等5秒。直到拿到響應後處理完了,才繼續解釋和執行接下來的**。
所以,非同步就是幹某件事情(尤其是耗時的事情)的時候,不幹等著,交給別人做,自己幹其他事情,同時等通知。同步就是傻傻地等著。
javaScript中ajax請求步驟
1.構建非同步請求物件 2.開啟連線 傳入url等引數 ajaxobj.open get php 03.ajaxobj.php 第三個引數是否同步 false非同步 預設 true同步 3.傳送資料 ajaxobj.send 4.註冊事件 當請求被傳送到伺服器時,我們需要執行一些基於響應的任務。每當...
javascript中AJAX的使用
ajax使用的方法 1 建立xmlhttpreques物件 瀏覽器使用xmlhttprequest物件與伺服器進行互動,獲取資料。一般現下流行的瀏覽器均支援xmlhttprequest物件 ie5 和 ie6 使用 activexobject 語法 老版本的ie瀏覽器的建立方式為 因此在使用該物件時...
JavaScript實踐 AJAX分頁
今天寫了乙個ajax分頁,把思路整理一下。private int count 0 總記錄數 private int currentpage 0 當前頁面 private int pagesize 10 每頁記錄數 private int totalpage 1 總頁總書 從資料取出總記錄數,求出頁面...