前言:
此时姐妹们对“js监听数据变化”大致比较关心,同学们都需要学习一些“js监听数据变化”的相关文章。那么小编也在网络上搜集了一些有关“js监听数据变化””的相关知识,希望兄弟们能喜欢,看官们一起来学习一下吧!首先,为什么要让前端判断用户的网络状态呢——为了更好的用户体验。
其次,前端能否判断网络状态?有哪些方法?
可以做到渐进式判断,不能做到绝对准确。使用的是navigator.onLine或navigator.connection.rtt
根据我实际测试所得,
navigator.onLine 无法及时获取真实网络状态,比如手动把网线,使用定时器获取navigator.onLine,始终是true,过很久才变成false(差不多相当于一个ajax的timeout时间)
navigator.connection 可以实时监听到网络变化(延迟2-5秒),但是获取到的网络是一个模糊值 比如navigator.connection.rtt 是请求预估延迟xx ms,有时候是0毫秒的延迟,却恰恰是已经断网了。
所以我做了一下判断:
const netWorkDownlink = navigator.connection.downlink; // 预估下载速度m/sif (navigator.connection && navigator.connection.onchange === null) { navigator.connection.onchange=() => { if (netWorkDownlink !== navigator.connection.downlink || navigator.connection.rtt === 0) { //网络断开 } else if (netWorkDownlink === navigator.connection.downlink || navigator.connection.rtt !== 0) { //连接到网络 } }}
虽然不太准确,但是目前测试没发现bug,
如果测试出了缺陷或者有更好的方法,欢迎评论。
需要互联网一线BAT大厂前端进阶面试资料点我头像私信回复『1』免费获取哦~
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #js监听数据变化 #ajax请求过程中断网