我现在只知道两种最常见的定时刷新方案,一种是利用Vue的内置函数setTimeout、setInterval定时执行,另一种是websocket消息推送。我的需求是,当数据库中的数据发生更新时,前端就要检测并展示出这些数据。这个正确的实现是利用websocket,但是我对websocket没有什么了解,所以这一篇文章先利用vue的内置函数做一个充当,后续发布websocket在vue中的详细使用。在此有点时间记录一下、当做笔记,同时也是为了帮助到同行业的广大开发者。
最终实现见图

要更新的数据为图上的红框中。
下面开始代码实现(这是我现写的模板,不是图中全部的代码):
1.基础模板

<template><div>//利用v-model等实现数据绑定</div>
</template><script>export default {data(){return{dbList: [],        //用于接收findDB方法中的数据}},methods:{findDB(){      //这个方法是你要获取后台数据的方法//这里面通过你的axiosUrl获取到一些数据,}},mounted(){        //模板渲染之后调用的,模板渲染之前是created//刚进页面就能获取到findDB()中的数据//this.findDB()}}
</script><style lang="scss" scoped></style>

2.setInterval()与setTimeout的区别
书写格式:

xxx(){       //定义一个方法函数
return setTimeout(()=>{         //setInterval换个名字就行了//要执行的方法句式:this.findDB()},60000)     //设置时间,这里是1分钟}

最关键:setInterval()成立后会一直执行,setTimeout(),如果没有条件触发,它就只执行一次
3.setInterval()问题没有解决

<template><div>//利用v-model等实现数据绑定</div>
</template><script>export default {data(){return{dbList: [],        //用于接收findDB方法中的数据}},methods:{findDB(){      //这个方法是你要获取后台数据的方法//这里面通过你的axiosUrl获取到一些数据,},times(){            //定义了一个times()方法来执行定时查询findDB()return setInterval(()=>{         //setInterval换个名字就行了this.findDB()},60000)       //设置时间,这里是1分钟}},destroyed() {clearInterval(this.times)       //退出页面后销毁定时方法},mounted(){       //模板渲染之后调用的,模板渲染之前是created//刚进页面就能获取到findDB()中的数据this.findDB()this.times()   //加载定时任务}}
</script><style lang="scss" scoped></style>

这个定时执行是执行了,销毁方法也调用了,但是退出当前页面后加载的定时任务并没有退出,它还在不断执行,而且在页面在重新进入一次,times()方法又被执行一次,导致了执行查询的速度变快,所以我没做深研究,在这里希望遇到这种情况的开发者注意一下。
4.采用setTimeout实现
上面说过setTimeout只执行一次,想要它不断执行,需要用到触发事件,这个触发的事件不可能是人为触发的,所以我们采用监听方式,思路就是当检测到xx里的值变动时,就触发这个定时事件,对基础模板做出如下调整:

<template><div>//利用v-model等实现数据绑定</div>
</template><script>export default {data(){return{dbList: [],        //用于接收findDB方法中的数据today: ' '      //定义一个当前时间,数据从findDB()中获取,被watch监听}},watch:{   //监听,监听什么?我们在data中定义一个变量,就监听这个变量today(){       //被监听的变量,也可以是对象集合等//当today中的值变化时,我们就触发定时事件this.times()}},methods:{findDB(){       //这个方法是你要获取后台数据的方法//这里面通过你的axiosUrl获取到一些数据,//怎样为today定义一个变量,那就当前时间,或随机数吧this.today = new Date()},//setTimeout()定时事件times(){return setTimeout(()=>{this.findDB()},5000)}},mounted(){      //模板渲染之后调用的,模板渲染之前是created//刚进页面就能获取到findDB()中的数据this.findDB()},destroyed(){ //销毁是不能忘记的clearTimeout(this.times)}}
</script><style lang="scss" scoped></style>

这样基于setTimeout()的定时执行模板就形成了,是很容易运用的。

Vue定时刷新页面数据相关推荐

  1. Android 设置定时刷新页面数据,最小自动刷新时间

    设置初始时间 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 String t ...

  2. Response_输出数据,实现文件下载,定时刷新页面,是否缓存,重定向,实现验证码...

    1.Response_输出数据 1.Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象. ServletRespon ...

  3. vue 定时刷新按钮控制

    vue 定时刷新按钮控制 直接上干货 公共组件 <template><el-switchref="switchObj"v-bind="$attrs&qu ...

  4. 用ajax技术实现无闪烁定时刷新页面

    在Web开发中我们经常需要实现定时刷新某个页面:1.来保持session的值或者检查session的值是否为空(比如说防止同一用户重复登录):2.实现实时站内短信:3.定时更新页面数据等等.但是我们在 ...

  5. 无闪烁刷新页面 php,AJAX_Ajax实现无闪烁定时刷新页面实例代码,在Web开发中我们经常需要实现 - phpStudy...

    Ajax实现无闪烁定时刷新页面实例代码 在Web开发中我们经常需要实现定时刷新某个页面: 1.来保持session的值或者检查session的值是否为空(比如说防止同一用户重复登录): 2.实现实时站 ...

  6. 关于IOS系统,H5页面操作history.go(n)回退页面时不会刷新页面数据的问题

    关于IOS系统 H5页面操作history.go(n)回退页面时不会刷新页面数据的问题 在我们从操作h5页面时,离开当前页面后,在使用返回键或者history.go(n)再次回到页面,有时是需要刷新当 ...

  7. JSP简单练习-定时刷新页面

    <%@ page contentType="text/html; charset=gb2312" %> <%@ page import="java.ut ...

  8. 用Ajax+js+jQuery实现无闪烁定时刷新页面 定时刷新

    本人想在一个JSP页面上显示一个消息模块,这个消息需要定时更新,请问大家如何用Ajax+js+jQuery实现无闪烁定时刷新页面功能.本人使用的js框架是jQuery. 先说思路,那就是在前端用 js ...

  9. 微信小程序 通过wx.redirectTo,实现单页面刷新效果 & 下拉刷新页面数据效果

    微信小程序 通过wx.redirectTo,实现单页面刷新效果 & 下拉刷新页面数据效果 一: 使用 wx.redirectTo(),实现页面刷新数据效果 API说明: 关闭当前页面,跳转到应 ...

最新文章

  1. Hibernate 入门小案例
  2. Python字符串、时间戳、datetime时间相关转换
  3. MYSQL-用户操作
  4. PMCAFF微课堂 | 运营女神揭秘产品运营推广中的场景思维
  5. java ef 引用问题_java调用shell(ps -ef | grep )问题
  6. code craft_以Craft.io为先—关于我们行业的实践职业道路的系列
  7. P1494-[国家集训队]小Z的袜子【分块优化莫队】
  8. ASP.NET(C#)获取客户端的网卡MAC代码
  9. JS-面向对象-This的指向---简单的函数调用 / 作为对象的方法调用时 / 作为构造函数调用时
  10. python 文件管理_python 文件操作
  11. QT将绝对路径转成相对路径
  12. Linux下vim常用操作
  13. ZZNU-oj-2141:2333--【O(N)求一个数字串能整除3的连续子串的个数,前缀和数组+对3取余组合数找规律】...
  14. java程序的运行方式
  15. 基于java(springboot框架)的购物商城系统 开题报告
  16. C4D插件X-Particles粒子特效(八)
  17. allegro的器件无法移动,而且右键点解锁没有用
  18. python拟合二次函数_Python 最小二乘法 拟合 二次曲线
  19. 微信小程序 后台播放,多页面播放
  20. css:层叠样式表(全)

热门文章

  1. 【MacOS】Hammerspoon-sugood多合一效率工具,新增状态栏显示系统信息(CPU/内存/硬盘/网速)-v0.1.7
  2. mathmatica中ListLinePlot函数画图不能混合是咋回事啊
  3. 面试一次问一次,HashMap是该拿下了(二)
  4. python小游戏——塔防小游戏代码开源
  5. 超详细!Chrome 浏览器、浏览器插件 下载和安装教程
  6. 计算机图形学中需要掌握的数学基础知识有哪些?
  7. 工具类源码 IP辅助类 验证IP地址或地址段是否有效 验证指定的IP是否有效 即验证IP是否属于某个IP段
  8. 深入理解Spring----PostConstruct和PreDestroy
  9. 微操作、微命令、微指令、微程序、微周期、微地址
  10. 极客时间 - Vim学习