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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

谣言粉碎机 - 极短时间内发送两个Odata request,前一个会自动被cancel掉?

發布時間:2023/12/19 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 谣言粉碎机 - 极短时间内发送两个Odata request,前一个会自动被cancel掉? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景

有時我們能在Chrome開發者工具的Network tab里觀察到SAP UI5應用會發出某些狀態為"取消"的OData請求。如下圖第五個請求。

之前有一種似是而非的說法:極短時間內發送兩個OData請求,則第一個會自動被cancel掉。

這個說法從字面上看,有兩點值得推敲:

1. cancel掉,被誰cancel掉?UI5框架還是Chrome?

2. “極短”,多短算極短?

我用代碼在for循環里一共發10個OData請求:

無論是同步還是異步,都沒有任何的請求被cancel。

10個同步請求:

10個異步請求:

就算發100個request都不會有一個request被cancel:

驗證結果,之前的說法“極短時間內發送兩個OData request,前一個會自動被cancel掉”是錯誤的。

那再回到本文第一張圖觀察到的cancel的場景, 原因究竟是什么?

觀察產生了被取消的OData請求的應用代碼,觀察到第523行有這個refresh操作:

在這個方法的第601行,bChangeDetected變量為true導致abortPendingRequest的調用。

abortPendingRequest的注釋已經很清楚地說明問題了。

什么情況下會導致AbortPendingRequest? 直接使用Chrome開發者工具的全文搜索得到答案:OData model的三個API: filter, sort, refresh

下面是我的同事Li Ben的進一步補充。

關于這個現象發生的原因和條件的問題

1. 在哪里可以看到這個cancel現象?

在我們的live search功能上,如果輸入較快或者正常速度輸入,會看到前面很多輸入請求都會被cancel掉:

如果輸入較慢則不會:

真的是快慢的原因嗎?

仔細觀察network發現,真正的原因是當上一次的network還處于pending狀態的時候,繼續輸入發起的請求就會cancel掉上一次的請求:

繼續深究, 這是在哪里做到的?

在SAP UI5的OData框架里面有這樣的實現:

在ODataModel.js中維護了一個http request的pending list,將已經發送但是還沒有收到響應的request對象都緩存在這個列表中:

每次發起OData請求的時候都會調用ODataModel的_request()方法,這個方法會把當前的request加到pending list中,并且通過一個wrap method包裝回調函數,確保在響應返回的時候首先把緩存的request對象從pending list中拿掉:

每次在OData Model上發起filter, sort, refresh操作的時候,都會檢查是否存在pending的request對象,如果存在未完成的請求,abort掉它:

回答上面的問題,在什么情況下會發生這種現象?

1. 同一個ODataModel的instance上發出的連續請求,因為pending list是緩存在this級別上面的。

2. 前一個Http請求的network還處于pending status的時候。

3. 就讀ODataModel的代碼和觀察到的現象,在ODataModel上發起filter, sort或者refresh的時候。

為什么在OData的request對象上發起abort調用就可以取消底層的network call?

簡單的說,UI5里面的OData Request對象是底層的Ajax Request對象XmlHttpRequest的一個代理,在ODataModel的_submit方法中:

具體實現是UI5中利用了一個第三方的庫datajs,datajs最終會調用瀏覽器的底層http對象XMLHttpRequest:

要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙":

總結

以上是生活随笔為你收集整理的谣言粉碎机 - 极短时间内发送两个Odata request,前一个会自动被cancel掉?的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日本成人小视频 | 免费福利视频网站 | 亚洲欧美国产精品专区久久 | 日韩三级a| 国产一区二区三区播放 | youjizz自拍 | 一级黄色片国产 | 国产激情对白 | 色婷婷久久一区二区三区麻豆 | 亚洲免费婷婷 | 国产又白又嫩又爽又黄 | 深夜福利网站 | 亚洲精品一级 | 在线观看日批 | 亚洲成人黄色av | 久久精品国产亚洲7777 | 91黄色入口 | 丰满人妻一区二区三区在线 | 免费午夜激情 | 人人超碰97 | 中文字幕精品三区 | 波多野结衣av中文字幕 | 97免费在线观看视频 | 日本高清网色 | 国产69页| 体内射精一区二区 | 日韩精品高清在线 | 夜夜草导航 | 亚洲天堂第一区 | 视频福利在线 | 男人的天堂国产 | 丁香一区二区 | 麻豆视频观看 | 男女日批在线观看 | 亚洲美女综合 | 美国一级黄色大片 | 天天射综合 | 无码精品视频一区二区三区 | 亚洲经典自拍 | 少妇29p | 3p在线播放 | 日本xx片| 手机av在线网 | 日本视频在线免费观看 | 精品成人久久久 | 美女自拍视频 | 爱爱视频网址 | 日韩视频成人 | 涩涩视频在线免费看 | 黄色性视频网站 | 精品视频一区二区三区四区五区 | 中文字幕视频免费观看 | 91看篇| 视频一区二区在线观看 | 日批视频免费 | 久久成人乱码欧美精品一区二区 | 久久av一区二区三区亚洲 | 日韩高清在线观看 | 免费婷婷 | av福利网站| 快射视频网站 | 亚洲AV无码久久精品国产一区 | 亚洲免费看片 | 久久久久亚洲色欲AV无码网站 | 亚洲熟悉妇女xxx妇女av | 三级免费网址 | 国产精品99久久久久久大便 | 一级黄色a | 日韩欧美一区二区三区视频 | 亚洲19p| 住在隔壁的她动漫免费观看全集下载 | 欧美乱码视频 | 91香蕉在线看| 国产精品欧美激情在线播放 | 国产区二区 | 国产96视频 | 中国毛片网站 | 午夜性刺激免费视频 | 黄色片网站免费 | 香蕉爱爱视频 | 农村少妇久久久久久久 | 成人福利免费视频 | 日精品| 国产福利视频一区二区三区 | 日韩一二三四五区 | 日本一区免费看 | av夜夜 | 日韩欧美字幕 | 91麻豆国产在线观看 | 无码人妻精品一区二区三区蜜桃91 | 91资源站 | 久久久久不卡 | 久久婷婷久久 | av首页在线观看 | 国产精品亚洲天堂 | xxxxx黄色片| 日韩国产在线一区 | 一区二区三区在线观 | 无码人妻一区二区三区在线 |