在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ vue使用axios輪詢請(qǐng)求方案

vue使用axios輪詢請(qǐng)求方案

頁面上需要顯示一段時(shí)刻在變化的數(shù)據(jù),數(shù)據(jù)的來源只能通過請(qǐng)求接口得到。希望老司機(jī)們可以給個(gè)方案或思路。

目前的采取的方案:
①在vue項(xiàng)目中定義一個(gè)定時(shí)器每隔2秒進(jìn)行一次axios請(qǐng)求。
②在vue項(xiàng)目中當(dāng)axios請(qǐng)求成功返回后再重新請(qǐng)求(子子孫孫無窮盡)。

在多次的請(qǐng)求中,發(fā)現(xiàn)中途偶爾會(huì)有超時(shí)的情況出現(xiàn),如果采用方案②,顯然不合適。
如果采用方案①,因?yàn)楫惒秸?qǐng)求的緣故會(huì)出現(xiàn)多個(gè)同樣的請(qǐng)求一起在處于pending狀態(tài),且返回時(shí)會(huì)有時(shí)間差。(不知該如何設(shè)置:相同的請(qǐng)求隊(duì)列,前面的請(qǐng)求被終止

回答
編輯回答
有點(diǎn)壞
  1. 首先應(yīng)該考慮websocket
  2. 在多次的請(qǐng)求中,發(fā)現(xiàn)中途偶爾會(huì)有超時(shí)的情況出現(xiàn),如果采用方案②,顯然不合適。

    這僅僅是需要被處理的異常情況,因?yàn)闊o論哪種情況都有可能超時(shí)或出現(xiàn)網(wǎng)絡(luò)錯(cuò)誤,這本來就是應(yīng)該需要考慮和處理的部分,而不是可以排除的部分,哪怕你用方案1或者websocket。

  3. 如果采用方案1,那問題就多了。

    • 由于同源請(qǐng)求在瀏覽器上僅允許6個(gè)TCP連接(chrome),如果處理不及時(shí),會(huì)出現(xiàn)一堆在Queuing/Stalled狀態(tài)的請(qǐng)求。
    • 相同的請(qǐng)求會(huì)受緩存鎖影響,處于Stalled狀態(tài)。
    • 由于瀏覽器會(huì)重用TCP連接,如果此時(shí)原本的多個(gè)同源TCP連接不可用,將會(huì)長(zhǎng)期處于Stalled狀態(tài)持續(xù)等待。

PS: 關(guān)于上訴第3點(diǎn)中所提的問題,可參考 Network Resource TimingQueuingStalled部分。

2018年7月6日 15:59
編輯回答
病癮

可以嘗試用遞歸的方式,在成功回調(diào)里設(shè)置2秒再次請(qǐng)求

clipboard.png

2018年7月1日 02:56
編輯回答
裸橙

回調(diào)中再調(diào)用自己,會(huì)遇到j(luò)s遞歸深度限制的問題。
所以,采用定時(shí)器較好。
你設(shè)置一下ajax的超時(shí)時(shí)間就好了,定時(shí)器與這個(gè)時(shí)間一樣就不會(huì)出現(xiàn)重復(fù)的情況了。
另外,新請(qǐng)求之前取消之前的請(qǐng)求也是可以的。

2017年6月13日 04:18
編輯回答
爛人

我也推薦樓上推薦的websocket。
你這個(gè)屬于即時(shí)通信了,具體例子可見本網(wǎng)站的消息通知。
用的是socket.io

2017年12月24日 17:02
編輯回答
安淺陌

這時(shí)候就體現(xiàn)出用setTimeout代替setInterval的好處了,題主不妨自行百度下orGoogle下

2017年4月19日 21:59