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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

“约见”面试官系列之常见面试题之第八十七篇之ajax发送多个请求优化(建议收藏)

發布時間:2023/12/9 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 “约见”面试官系列之常见面试题之第八十七篇之ajax发送多个请求优化(建议收藏) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

AJAX中同時發送多個請求(并發)對象處理方法

javascript:;" rel="nofollow" onClick="javascript:tagshow(event, 'ajax');" target="_self">ajax應用中,通常一個頁面要同時發送多個請求,如果只有一個XMLHttpRequest對象,前面的請求還未完成,后面的就會把前面的覆蓋 掉,如果每次都創建一個新的XMLHttpRequest對象,也會造成浪費。解決的辦法就是創建一個XMLHttpRequset的對象池,如果池里有 空閑的對象,則使用此對象,否則將創建一個新的對象。

下面是從網上找的一個簡單的類:
*?XMLHttpRequest?Object?Pool
?*
?*?@author????legend?<legendsky@hotmail.com>
?*?@link??????http://www.ugia.cn/?p=85
?*?@Copyright?www.ugia.cn
?*/?

var?XMLHttp?=?{
????
_objPool:?[],
????
_getInstance:?function?()
????{
????????for?(var?
i?=?0;?i?<?this._objPool.length;?i?++)
????????{
????????????if?(
this._objPool[i].readyState?==?0?||?this._objPool[i].readyState?==?4)
????????????{
????????????????return?
this._objPool[i];
????????????}
????????}
????????
//?IE5中不支持push方法
????????
this._objPool[this._objPool.length]?=?this._createObj();
????????return?
this._objPool[this._objPool.length?-?1];
????},
????
_createObj:?function?()
????{
????????if?(
window.XMLHttpRequest)
????????{
????????????var?
objXMLHttp?=?new?XMLHttpRequest();
????????}
????????else
????????{
????????????var?
MSXML?=?['MSXML2.XMLHTTP.5.0',?'MSXML2.XMLHTTP.4.0',?'MSXML2.XMLHTTP.3.0',?'MSXML2.XMLHTTP',?'Microsoft.XMLHTTP'];
????????????for(var?
n?=?0;?n?<?MSXML.length;?n?++)
????????????{
????????????????
try
????????????????
{
????????????????????var?
objXMLHttp?=?new?ActiveXObject(MSXML[n]);
????????????????????break;
????????????????}
????????????????
catch(e)
????????????????{
????????????????}
????????????}
?????????}??????????
????????
//?mozilla某些版本沒有readyState屬性
????????
if?(objXMLHttp.readyState?==?null)
????????{
????????????
objXMLHttp.readyState?=?0;
????????????
objXMLHttp.addEventListener("load",?function?()
????????????????{
????????????????????
objXMLHttp.readyState?=?4;
????????????????????if?(
typeof?objXMLHttp.onreadystatechange?==?"function")
????????????????????{
????????????????????????
objXMLHttp.onreadystatechange();
????????????????????}
????????????????},??
false);
????????}
????????return?
objXMLHttp;
????},
????
//?發送請求(方法[post,get],?地址,?數據,?回調函數)
????
sendReq:?function?(method,?url,?data,?callback)
????{
????????var?
objXMLHttp?=?this._getInstance();
????????
with(objXMLHttp)
????????{
????????????
try
????????????
{
????????????????
//?加隨機數防止緩存
????????????????
if?(url.indexOf("?")?>?0)
????????????????{
????????????????????
url?+=?"&randnum="?+?Math.random();
????????????????}
????????????????else
????????????????{
????????????????????
url?+=?"?randnum="?+?Math.random();
????????????????}
????????????????
open(method,?url,?true);
????????????????
//?設定請求編碼方式
????????????????
setRequestHeader('Content-Type',?'application/x-www-form-urlencoded;?charset=UTF-8');
????????????????
send(data);
????????????????
onreadystatechange?=?function?()
????????????????{
????????????????????if?(
objXMLHttp.readyState?==?4?&&?(objXMLHttp.status?==?200?||?objXMLHttp.status?==?304))
????????????????????{
????????????????????????
callback(objXMLHttp);
????????????????????}
????????????????}
????????????}
????????????
catch(e)
????????????{
????????????????
alert(e);
????????????}
????????}
????}
};?

示例:

<script?type="text/javascript"?src="xmlhttp.js"></script>
<script?type="text/javascript">
function?test(obj)
{
????alert(obj.statusText);
}
XMLHttp.sendReq('GET',?'http://www.ugia.cn/wp-data/test.htm',?'',?test);
XMLHttp.sendReq('GET',?'http://www.ugia.cn/wp-data/test.htm',?'',?test);
XMLHttp.sendReq('GET',?'http://www.ugia.cn/wp-data/test.htm',?'',?test);
XMLHttp.sendReq('GET',?'http://www.ugia.cn/wp-data/test.htm',?'',?test);
alert('Pool?length:'?+?XMLHttp._objPool.length);
</script>?

本面試題為前端常考面試題,后續有機會繼續完善。我是歌謠,一個沉迷于故事的講述者。

歡迎一起私信交流。

“睡服“面試官系列之各系列目錄匯總(建議學習收藏)?

總結

以上是生活随笔為你收集整理的“约见”面试官系列之常见面试题之第八十七篇之ajax发送多个请求优化(建议收藏)的全部內容,希望文章能夠幫你解決所遇到的問題。

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