第三方插件分包 --- 篇幅3(使用promise加锁阻塞解决多次加载问题)

第三方插件分包 — 篇幅3

问题描述

篇幅2-插件分包当使用script动态加载js文件时,如果存在多次调用(例多次调用获取的方法,会导致加载多次script标签去引用js)如下:

class Test{
   
	async add () {
   
		// 因为插件是懒加载异步的 所以需要使用async await达到同步代码编辑
	   let html2canvas = await ThirdPartyUtils.getThirdParty("html2canvas");
	   // html2canvas.render......
	}
}

let test = new Test();
// 在循环中会多次加载html2canvas.min.js文件,因为for循环是同步的但是add方法是异步的
for (let i = 0; i < 10; i++) {
   
       test.add(); 
}

循环调用时会多次加载js文件,如下:
循环调用时
如果js文件中有循环嵌套引用时,如果多次加载相同的js文件会报错,笔者就遇到

解决方案(使用promise加锁阻塞)

const ThirdPartyType = {
   
    axios: {
   
       file:"axios.min.js",
       load:false,
       queue:[]
    },//0.21.4
    echarts: {
   
        file: "echarts.min.js",
        load: false,//默认为未加载
        queue: []
    },//4.9.0
    html2canvas
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值