收藏
回答

主包require异步加载分包为什么是同步执行?

// 情况1
Page({
   async onLoad() {
      console.log(1)
      require.async('../xxx').then(async (pkg) => {
         console.log(2)
      })
      console.log(3)
   }
})
// 打印顺序 1  2  3

// 情况2
Page({
   async onLoad() {
      console.log(1)
      require('../xxx', async (pkg) => {
         console.log(2);
      }, ({ errMsg, mod }) => {
         console.error(`path: ${mod}, ${errMsg}`)
      })
      console.log(3)
   }
})
// 打印顺序 1  2  3


如上图所示:

官方文档上写的分布异步化的两种加载策略,如果下载包是异步的,那么打印顺序是否应该是1 3 2

目前测试结果看,2种方式的回调都是在console.log(3) 之前执行,且1 和 3中间时间差有几百毫秒的差值,即阻塞了代码执行。请问这种属于正常情况吗?

回答关注问题邀请回答
收藏

1 个回答

  • 微盟
    微盟
    2023-06-27

    没有复现你这个情况。不管记载同步还是异步模块,都会是3比2先执行的

    2023-06-27
    有用
    回复 2
    • vw17
      vw17
      2023-06-28
      官方的分包异步化demo可以复现。点击Go to subPackage A。https://developers.weixin.qq.com/s/6AYlPZmm7csW
      2023-06-28
      回复
    • 白小明
      白小明
      03-21回复vw17
      开发者工具有bug,真机的加载顺序是正常的,会先打印 1 3,再打印 2 4
      03-21
      回复
登录 后发表内容