腾讯地图 多个异步script互相依赖加载问题

问题

根据官方的文档的异步示例,使用callback参数回调,无法确定其他script的加载完成
错误写法

const script = document.createElement('script')
const script2 = document.createElement('script')
script.type = "text/javascript";
script2.type = "text/javascript";
script.src = `https://map.qq.com/api/gljs?v=1.exp&key=${process.env.VUE_APP_MAP_KEY}&libraries=geometry&callback=initMap`
script2.src = `https://apis.map.qq.com/tools/geolocation/min?key=${process.env.VUE_APP_MAP_KEY}&referer=myapp`
document.body.appendChild(script)
document.body.appendChild(script2)

使用两个callback会很奇怪,不能顺利解决异步问题

解决方法

使用script的onload方法,并使用promise封装

// 添加script
addScript(src){
  return new Promise( resolve => {
    const script = document.createElement('script')
    script.type = "text/javascript";
    script.src = src
    document.body.appendChild(script)
    script.onload = () => resolve()
  })
}

const p1 = this.addScript(`https://map.qq.com/api/gljs?v=1.exp&key=${process.env.VUE_APP_MAP_KEY}&libraries=geometry`)
const p2 = this.addScript(`https://apis.map.qq.com/tools/geolocation/min?key=${process.env.VUE_APP_MAP_KEY}&referer=myapp`)
await Promise.all([p1, p2])
this.initMap() //所有script加载完成后执行的方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值