公司有个业务场景需要实时的数据展示,所以当然要不断的获取后端传来的最新的数据来渲染到页面上。这里我们就可以使用轮询,简单来说就是在一个间隔事件内不断的请求后端接口,让他不断的吐数据出来。
1.首先需要一个触发事件
我的触发事件是vue的生命周期mounted(),你可以用点击事件代替,也可以用生命周期
2.有一个定时器
定时器我选择setTimeout而不是setInterval,因为setInterval太不可控了,一旦页面刷新就会触发两个setInterval,而setTimeout自带清除,所以我们使用setTimeout可控一些
3.有一个被触发事件
这个被触发事件里写具体的业务逻辑,和再一次启动定时器的作用
具体代码-Vue实现
export default{ mounted(){ this.getStatus(); // 轮询事件mounted时触发 }, ........ getStatus(){ let _this = this; this.axios.post("你的api",{}) .then(res) =>{ // .... 业务逻辑 setTimeout(function(){ _this.getStatus(); },200) } } }