您好,登錄后才能下訂單哦!
這篇文章主要講解了“ajax同步和異步的區別有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“ajax同步和異步的區別有哪些”吧!
區別:1、同步中一個線程要等待上一個線程執行完才能開始執行,而異步中一個線程在執行中,下一個線程不必等待它執行完就可以開始執行;2、同步是單線程操作,而異步是多線程操作;3、異步的效率要高于同步。
本教程操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
ajax異步請求:
異步請求就當發出請求的同時,瀏覽器可以繼續做任何事,Ajax發送請求并不會影響頁面的加載與用戶的操作,相當于是在兩條線上,各走各的,互不影響。一般默認值為true。異步請求可以完全不影響用戶的體驗效果,無論請求的時間長或者短,用戶都在專心的操作頁面的其他內容,并不會有等待的感覺。
比如:
$.ajax({ type:"POST", url:"Venue.aspx?act=init", dataType:"html", success:function(result){ //function1() f1(); f2(); } failure:function (result) { alert('Failed'); }, } function2();
說明:上述代碼中,當ajax塊發出請求后,他將停留function1(),等待server端的返回,但同時(在這個等待過程中),前臺會去執行function2()。
ajax同步請求:
同步請求即是當前發出請求后,瀏覽器什么都不能做,必須得等到請求完成返回數據之后,才會執行后續的代碼,相當于是排隊,也就是說,當JS代碼加載到當前ajax的時候會把頁面里所有的代碼停止加載,頁面處于一個假死狀態,當這個ajax執行完畢后才會繼續運行其他代碼頁面解除假死狀態(即當ajax返回數據后,才執行后面的function)。
比如:
$.ajax({ type:"POST", url:"Venue.aspx?act=init", dataType:"html", async: false, success:function(result){ //function1() f1(); f2(); } failure:function (result) { alert('Failed'); }, } function2();
說明:上述代碼中,當把asyn設為false時,這時ajax的請求時同步的,也就是說,這個時候ajax塊發出請求后,他會等待在function1()這個地方,不會去執行function2(),直到function1()部分執行完畢。
看完了對于ajax同步與異步請求的意思后,我們就來看看ajax同步請求與異步請求的區別。
ajax同步請求與異步請求的區別:
同步是指一個線程要等待上一個線程執行完才能開始執行,同步可以看做是一個單線程操作,只要客戶端請求了,在服務器沒有反饋信息之前是一個線程阻塞狀態。
異步是一個線程在執行中,下一個線程不必等待它執行完就可以開始執行。異步肯定是個多線程。在客戶端請求時,可以執行其他線程,并且在把這個線程存放在他的隊列里面,有序的執行。
異步的效率要高于同步。如果數據在線程間共享,那么必須使用同步!
異步模式下:
當我們使用AJAX發送完請求后,可能還有代碼需要執行。這個時候可能由于種種原因導致服務器還沒有響應我們的請求,但是因為我們采用了異步執行方式,所有包含AJAX請求代碼的函數中的剩余代碼將繼續執行。如果我們是將請求結果交由另外一個JS函數去處理的,那么,這個時候就好比兩條線程同時執行一樣。
同步模式下:
當我們使用AJAX發送完請求后,后續還有代碼需要執行,我們同樣將服務器響應交由另一個JS函數去處理,但是這時的代碼執行情況是:在服務器沒有響應或者處理響應結果的JS函數還沒有處理完成return時,包含請求代碼的函數的剩余代碼是不能夠執行的。就好比單線程一樣,請求發出后就進入阻塞狀態,知道接觸阻塞余下的代碼才會繼續執行。
感謝各位的閱讀,以上就是“ajax同步和異步的區別有哪些”的內容了,經過本文的學習后,相信大家對ajax同步和異步的區別有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。