vue 访问后台接口(vue轮询请求解决方案的完整实例)
类别:编程学习 浏览量:1883
时间:2021-10-16 00:27:21 vue 访问后台接口
vue轮询请求解决方案的完整实例轮询的理解
其实轮询的重点在于间隔多少时间执行一次,而并非循环本身。ajax是异步请求,从发起请求到接受到响应即为一个完整的过程,这个过程所需要的时间是无法预料的,说的极端点,若请求所需的时间超过了我们轮询的间隔时间,那么是会出现很多问题的,所以轮询的间隔应该是在确保这个请求过程完成的基础之上的,这也更符合逻辑。
业务描述:
- 页面初始化显示第一页数据,随后每隔十秒当前页数据刷新
- 更改筛选条件或者更改页码直接刷新数据,随后每个十秒当前也数据刷新
业务逻辑点分析:
- 手动调用时,立即执行发起请求
- 随后每隔十秒执行一次,刷新一次列表
实现思路
- 直接先调用请求
- 在请求的成功回调函数中设置定时器setTimeout
- 在定时器内重复1.2操作
- 将1.2.3步骤封装为递归函数
// 轮询方法 polling (page) { this.getWorks(page).then(res => { this.pollingST = setTimeout(() => { clearTimeout(this.pollingST) this.polling(page) }, 10000) }) }
为什么不采用setInterval
setInterval的功能看似是完美符合轮询的概念,若我们的操作是同步代码,那么使用setInterval是没有任何问题的,问题就出在setInterval不够灵活,我们无法得知上一次请求是否已经完毕。所以setTimeout会更好一些。
需要注意的地方
在轮询中我将定时器用pollingST变量记录了下来,每次执行前必须先清除上一个定时器,因为递归的调用是在定时器内部,所以通过清除定时器就能很方便的结束轮询
完整伪代码
<script> export default { data () { return { pollingST: null } }, methods: { // 分页change事件 pageChange (params) { // 清除现有定时器 clearTimeout(this.pollingST) // 调用轮询 this.polling(params) }, // 请求接口方法 getWorks () { return new Promise(resolve => resolve({})) }, // 轮询方法 polling (params) { this.getWorks(params).then(res => { this.pollingST = setTimeout(() => { clearTimeout(this.pollingST) this.polling(params) }, 10000) }) } }, created () { // 调用轮询 this.polling({ page: 1, pageSize: 5 }) }, destroyed () { clearTimeout(this.pollingST) } } </script>
总结
到此这篇关于vue轮询解决方案的文章就介绍到这了,更多相关vue轮询解决内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
您可能感兴趣
- vue router用法(如何在Vue 3中扩展Vue Router链接详解)
- vue按需引入elementui组件(vue ElementUI实现异步加载树)
- vue websocket实时刷新数据(Vue+WebSocket页面实时刷新长连接的实现)
- vue移动端返回在指定位置(vue移动端判断手指在屏幕滑动方向)
- vue左右联动列表(vue+iview的菜单与页签的联动方式)
- vue加element ui弹窗(Vue中ElementUI分页组件Pagination的使用方法)
- django框架教程第100讲(详解Django+Vue+Docker搭建接口测试平台实战)
- vue函数中的默认参数(Vue3中SetUp函数的参数props、context详解)
- vue计算两个日期差几分钟(vue实现同时设置多个倒计时)
- vue如何检查数组变化(Vue2中无法检测到数组变动的原因及解决)
- vue前端打包发布教程(Vue项目打包、合并及压缩优化网页响应速度)
- elementuivue使用技巧(Vue Element前端应用开发之常规Element界面组件)
- vue中的mapgetter优势(vuex 中辅助函数mapGetters的基本用法详解)
- vue点击事件动态禁用(vue开发移动端使用better-scroll时click事件失效的解决方案)
- vue滚动条下拉翻页(Vue中利用better-scroll组件实现横向滚动功能)
- vue怎么引入axios(如何用vue封装axios请求)
- 爱情可以当饭吃吗(怎么回复)
- 高考数学题(高考数学题基础题占多少分)
- 没钱只能吃土(没钱要吃土了幽默短信发朋友圈)
- 今年考高会很难吗(今年高考会考试吗)
- 盘古开天地 他创造了世界,谁创造了盘古 盘古是伏羲吗(盘古开天地他创造了世界)
- 关于队徽 你了解这些么 二(关于队徽你了解这些么)
热门推荐
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9