封装了一个element加载动画的工具类

import { Message } from 'element-ui'
/**
 * 
 * @param dom  // 容器
 * @return loading  // loading实例
 */

// 声明一个加载变量
let loading = null;
// 声明一个计时器变量
let timer = null;

// 加载动画开启的方法
async function startLoading(dom) {
    // 若快速的重复启动加载动画, 则如果上一次的动画未结束则先关闭上一次动画再重新开启动画, 调用关闭函数的方法
    if (loading !== null) { closeLoading() }
    // 如果上一次的动画定时器未清除, 则清除定时器
    if (timer !== null) { clearInterval(timer) }
    // 启动加载动画
    loading = await this.$loading({
        lock: false,                 // 是否锁屏
        text: '努力加载中...',       // 加载时的动画文字
        spring: 'el-icon-loading',             // 引入的loading图标
        target: document.querySelector(dom),  // 需要遮罩的区域
    })

    // 设定定时器,超时8S后自动关闭遮罩层,避免请求失败时,遮罩层一直存在的问题
    timer = setTimeout(() => {
        // 5秒后判断加载是否已经关闭, 如果没关闭则调用关闭动画的函数
        if (loading !== null) {
            // 给出提示
            Message.error('加载超时! 请检查网络!')
            // 调用关闭加载动画的函数
            closeLoading()
        }
    }, 8000);

    //  返回加载动画实例
    return loading
}

// 加载动画关闭的函数
function closeLoading() {

    // 如果加载动画正在加载
    if (loading !== null) {
        // 关闭动画
        loading.close();
    }
    // 如果存在定时器
    if (timer !== null) {
        // 清除定时器
        clearInterval(timer)
    }

    // 将动画实例初始化
    loading = null
}

// 暴露startLoading方法
export { startLoading, closeLoading }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值