我们在src跟目录下创建一个utils目录下面创建一个continuousLoading.js
参考代码如下
let value = 0;export default function(callback) {const timer = setInterval(() => {if (callback&&(value || value === 0)&&value < 99) {value += 1;callback(value);} else {clearInterval(timer);}}, 500);
}
这里这个描述甚至你也可以改成外面传进来的 我这里就直接设置 500 0.5秒执行一次了
然后每次进来判断 value 如果还小于99就继续 加一 然后回调一下传进来的函数
如果到99了 就直接clearInterval关掉定时器
然后 我们vue组件代码编写如下
<template><div>{{ value }}</div>
</template><script>
import continuousLoading from '@/utils/continuousLoading';export default {data() {return {value: 0}},created() {continuousLoading((value) => {this.value = value;});}
}
</script>
这里 主要是created中 定义了continuousLoading 我们传进去的回调就是 接受到value 然后将接到的value给 data中的响应式的value赋值
因为我们continuousLoading中写了每500后加一回调 传value作为回调函数的参数
这样 我们页面上的值就一直在加 且用于 不会超过99
做出一个正在加载的假象给用户看
甚至我们还可以配合element-ui的组件
参考代码如下
<template><div><el-progress type="circle" :percentage="value"></el-progress></div>
</template><script>
import continuousLoading from '@/utils/continuousLoading';export default {data() {return {value: 0}},created() {continuousLoading((value) => {this.value = value;});}
}
</script>
就很完美