日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Web请求中同步与异步的区别

發布時間:2023/12/10 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Web请求中同步与异步的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

普通的B/S模式就是同步,而AJAX技術就是異步,當然XMLHttpReques有同步的選項。

同步:提交請求->等待服務器處理->處理完畢返回。這個期間客戶端瀏覽器不能干任何事。

異步: 請求通過事件觸發->服務器處理(這是瀏覽器仍然可以作其他事情)->處理完畢。

舉個生動的例子吧:

同步就是你叫我去吃飯,我聽到了就和你去吃飯;如果沒有聽到,你就不停的叫,直到我告訴你聽到了,才一起去吃飯。

異步就是你叫我,然后自己去吃飯,我得到消息后可能立即走,也可能等到下班才去吃飯。

所以,要我請你吃飯就用同步的方法,要請我吃飯就用異步的方法,這樣你可以省錢。

再舉個例子,打電話時同步,發短信是異步。

ajax的open()方法

用法:open(http-method,url,async,userID,password)

后面是帳號和密碼,在禁止匿名訪問的http頁面中,需要用戶名和口令。

ajax.open方法中,第3個參數是設同步或者異步。prototype等js類庫一般都默認為異步,即設為true。 先說下同步的情況下,js會等待請求返回,獲取status。不需要onreadystatechange事件處理函數。 而異步則需要onreadystatechange事件處理,且值為4再正確處理下面的內容。

首先看看異步處理方式。

其中async是一個布爾值。如果是異步通信方式(true),客戶機就不等待服務器的響應;如果是同步方式(false),客戶機就要等到服務器返回消息后才去執行其他操作。我們需要根據實際需要來指定同步方式,在某些頁面中,可能會發出多個請求,甚至是有組織有計劃有隊形大規模的高強度的request,而后一個是會覆蓋前一個的,這個時候當然要指定同步方式:Flase。

請求方式

GET

最為常見的HTTP請求,普通上網瀏覽頁面就是GET。GET方式的參數請求直接跟在URL后,以問號開始。(JS中用window.location.search獲得)。參數可以用encodeURIComponent進行編碼,使用方式:

1 var EnParam = encodeURIComponent(param);
  • URL只支持大約2K的長度,即2048字符數;
  • 使用GET進行AJAX請求時候會緩存導致出現的頁面不是正確的,一般方法加random參數值;
  • ajax.send(null)。

POST

向服務器提交數據用到。

  • 需要將form表單中的值先取出轉換成字符串,用&符號連接,(同GET傳參數一樣);
  • 提交數據量2GB;
  • 使用ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'),處理提交的字符串;
  • ajax.send(strings),這個strings表示form中需要提交的內容,例如a=1&b=2類似這樣的字符串。

程序示例

同步傳輸模式:

1 function RequestByGet(nProducttemp,nCountrytemp) 2 { 3 var xmlhttp 4 if (window.XMLHttpRequest) 5 { 6 //isIE = false; 7 xmlhttp = new XMLHttpRequest(); 8 } 9 else if (window.ActiveXObject) 10 { 11 //isIE = true; 12 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 13 } 14 15 //Web page location. 16 var URL="http://www.baidu.com/; 17 xmlhttp.open("GET",URL, false); 18 //xmlhttp.SetRequestHeader("Content-Type","text/html; charset=Shift_JIS") 19 xmlhttp.send(null); 20 var result = xmlhttp.status; 21 22 //OK 23 if(result==200) 24 { 25 document.getElementById("div_RightBarBody").innerHTML=xmlhttp.responseText; 26 } 27 xmlhttp = null; 28 }

異步傳輸模式:

1 var xmlhttp 2 function RequestByGet(nProducttemp,nCountrytemp) 3 { 4 if (window.XMLHttpRequest) 5 { 6 //isIE = false; 7 xmlhttp = new XMLHttpRequest(); 8 } 9 else if (window.ActiveXObject) 10 { 11 //isIE = true; 12 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 13 } 14 15 //Web page location. 16 var URL="http://www.baidu.com/"; 17 xmlhttp.open("GET",URL, true); 18 xmlhttp.onreadystatechange = handleResponse; 19 //xmlhttp.SetRequestHeader("Content-Type","text/html; charset=UTF-8") 20 xmlhttp.send(null); 21 } 22 function handleResponse() 23 { 24 if(xmlhttp.readyState == 4 && xmlhttp.status==200) 25 { 26 document.getElementById("div_RightBarBody").innerHTML=xmlhttp.responseText; 27 xmlhttp = null; 28 } 29 }

原文鏈接:http://www.nowamagic.net/program/program_SynchronousAndAsynchronous.php

轉載于:https://www.cnblogs.com/wangweiabcd/p/3885989.html

總結

以上是生活随笔為你收集整理的Web请求中同步与异步的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。