收藏
回答

onload里的异步请求一定会在onshow之前完成吗

如果onload里面有一个异步的request请求,那么onshow会等onload里的一步请求结束后再折行吗?还是和异步加载一起同时进行?

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

3 个回答

  • Why not?
    Why not?
    2022-12-14

    这个问题的答案应该是一定不会。

    onLoad、onShow都是非阻塞的,小程序能保证的只是onLoad在onShow之前执行,不保证onShow的代码一定在onLoad的代码执行完才执行,哪怕是onLoad里用了await都没用。

        async onLoad() {
        console.log('onLoad start')
        await new Promise((resolve, reject) => {
          setTimeout(function () {
            resolve(0)
            console.log('onLoad resolved')
          }, 3000)
        })
        console.log('onLoad ended')
      },
    
    
      async onShow() {
        console.log('onShow start')
        await new Promise((resolve, reject) => {
          setTimeout(function () {
            resolve(0)
            console.log('onShow resolved')
          }, 2000)
        })
        console.log('onShow ended')
      },
    


    上面的输出是:

    onLoad start
    onShow start
    onShow resolved
    onShow ended
    onLoad resolved
    onLoad ended
    
    2022-12-14
    有用
    回复
  • 平先生
    平先生
    2017-09-30

    既然是异步,那当然是request请求后就继续下一步了,是不管请求要做什么要执行多久的。

    建议用回调。

    2017-09-30
    有用
    回复
  • 深~
    深~
    2017-09-30

    当然不会

    2017-09-30
    有用
    回复
登录 后发表内容