中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

XHR對(duì)象send方法的同異步問題

2024-03-02    分類: 網(wǎng)站建設(shè)

  XHR對(duì)象上的send方法不僅是用于發(fā)送數(shù)據(jù)部分,只有調(diào)用了send方法,整個(gè)HTTP請(qǐng)求頭才會(huì)被發(fā)出,然后才是真正的內(nèi)容部分。如此復(fù)雜的過程在規(guī)范中也沒有具體的定義,所以目前各大瀏覽器上的實(shí)現(xiàn)都存在細(xì)微的差異,特別是同異步這個(gè)大坑再次中槍。 一個(gè)精密的實(shí)驗(yàn)   其實(shí)我以前一直以為send方法總是同步發(fā)起的(注意這里討論的是“發(fā)起”這個(gè)行為本身的同異步,open方法的第三個(gè)參數(shù)始終為true,不討論false的情況),還在討論同異步的文章中使用了XHR對(duì)象的例子,現(xiàn)在看來確實(shí)是個(gè)不恰當(dāng)?shù)睦?。在一些瀏覽器中XHR對(duì)象的send方法確實(shí)是同步發(fā)起的,但并不是所有瀏覽器都這樣,可以通過下面的實(shí)驗(yàn)來證實(shí)(NodeJS 的部分需要 harmony 和 use_strict): //nodejs require('http').createServer(function(request,response){ response.setHeader('Content-Type','text/html'); if(request.url=='/test'){ console.log(request.url); let connection=request.connection; connection.write('HTTP/1.1 100 Continue\n\n'); console.log(100); request.on('data',function(e){ console.log(e+""); response.end('ok'); }); }else{ let path=process.cwd()+request.url; require('fs').readFile(path,function(error,data){ response.end(error?'error':data); }); }; }).listen(1234);   這個(gè)測試在三大主流瀏覽器上測試會(huì)得到三個(gè)不同的結(jié)果: Chrome39:請(qǐng)求同步發(fā)出,死循環(huán)不會(huì)影響請(qǐng)求 Firefox33:請(qǐng)求被注冊(cè)到下一個(gè)消息中異步發(fā)出 IE11:請(qǐng)求的頭部分同步發(fā)出,內(nèi)容部分被注冊(cè)到下一個(gè)消息中異步發(fā)出 實(shí)驗(yàn)結(jié)果影響的現(xiàn)實(shí)   這個(gè)結(jié)果對(duì)實(shí)際運(yùn)用有什么影響呢?在同步過程中多次調(diào)用open方法就能看出差異。XHR對(duì)象在調(diào)用open方法時(shí)會(huì)停止原來的工作,于是有以下幾種情況: Chrome的send是同步發(fā)出的,即使在send之后馬上調(diào)用open也無法停止已經(jīng)send的東西了,已經(jīng)潑出去的水,根本停不下來。 Firefox就完全不同,由于是注冊(cè)到下一個(gè)消息中,send后馬上調(diào)用open就會(huì)取消掉原先注冊(cè)但還沒執(zhí)行到的動(dòng)作。 IE比較奇葩,在調(diào)動(dòng)send時(shí)頭已經(jīng)發(fā)出了,這部分是收不回來的。send后馬上調(diào)用open只能阻止內(nèi)容部分的發(fā)出。 本文來源于成都網(wǎng)站建設(shè)公司與成都網(wǎng)站設(shè)計(jì)制作公司-創(chuàng)新互聯(lián)成都公司!

文章標(biāo)題:XHR對(duì)象send方法的同異步問題
標(biāo)題網(wǎng)址:http://m.rwnh.cn/news14/319814.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、微信小程序小程序開發(fā)、手機(jī)網(wǎng)站建設(shè)網(wǎng)站設(shè)計(jì)、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司
集贤县| 和顺县| 高安市| 白山市| 醴陵市| 阳东县| 清镇市| 广州市| 郯城县| 罗源县| 株洲市| 方山县| 宜兴市| 罗田县| 梅州市| 西城区| 汶川县| 赤壁市| 休宁县| 新竹市| 尤溪县| 呼和浩特市| 湟中县| 团风县| 田阳县| 洛阳市| 刚察县| 龙里县| 获嘉县| 汾阳市| 诏安县| 兴宁市| 宜城市| 广元市| 隆尧县| 康定县| 江门市| 乐山市| 积石山| 桃园市| 柞水县|