小白的第一个项目,记录方案一:使用定时器一直请求一个空接口,请求不到时弹出提醒一:直接在app.vue中挂载的钩子函数中使用定时器一直请求一个空接口this.isLine()setInterval(()\=>{this.isLine()},10000);空接口,如果请求成功,则连接网络,如果失败,则视为断开连接isLine(){this.$axios(this.httpTest+'/Index',{},'get').then((res)=>{this.$store.commit('setSystemLine',true)}).catch((err)=>{this.$toast('网络断开')this.$store.commit('setSystemLine',false)//控制断线后的页面样式})}方案二:使用全局事件分发,每次在有请求的时候都会触发这个事件,这样就不需要一直请求服务器的计时器。方法:1.新建一个axiosEmitter.js文件constEventEmitter=require('events');classAxiosEmitterextendsEventEmitter{constructor(){super();//必须调用super才能定义"this"}}constaxiosEmitter=newAxiosEmitter();exportdefaultaxiosEmitter;目录结构是这样的在axios网络请求文件中分发事件1.请求成功时触发```axiosEmitter.emit("axiosEmitter11");```2.响应失败时触发(注意这是响应)```axiosEmitter.emit("axiosEmitter");//发送断网请求```3.我这里是this.$axiosEmitter.on("axiosEmitter",()=>{//断网时的console.l,接受app中mountedhook中的事件.vueog("axiosEmitter断开连接");this.$toast('网络断开')this.$store.commit('setSystemLine',false)})this.$axiosEmitter.on("axiosEmitter11",()=>{console.log("axiosEmitter11isconnectedtothenetwork");this.$store.commit('setSystemLine',true)})我用vuex控制每次显示断网的页面样式。如有不妥请回帖请大家指出交流
