收藏
回答

onShow一定是在onLoad执行完之后才开始执行?

我们知道,页面load好后,会启动onLoad;页面show好后,会启动onShow,那如果我的onLoad写的很复杂,执行时间特别长,等到页面show好后,它还没有执行完,那这个时候onshow会开始执行吗?还是会等到onLoad执行完,才开始执行?


或者我这么问,load页面和show页面肯定是在一个线程里执行,但是onload和onshow也在这个线程里吗?如果是,那么肯定串行执行:“load页面--》onload--》show页面--》onshow”。如果不是,就是说系统会另外开一个线程执行onload和onshow,并且是onload新开一个线程,onshow也新开一个线程,那“load页面、onload、show页面、onshow”肯定就不是串行的。

那到底是怎样的?请高手解答。

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

4 个回答

  • 正周
    正周
    2019-04-13

    看文档是串行 https://developers.weixin.qq.com/miniprogram/dev/guide/framework/page-life-cycle.html

    2019-04-13
    有用 1
    回复
  • 郭一尘@耐心
    郭一尘@耐心
    2021-06-07

    在onload 和 onShow第一行分别打了一行console

    onload和onshow分别请求服务器,并在请求回执成功时输出服务器返回结果。

    onLoad:{

    console.log("1");

    wx.request(res=>{console.log("load request success")});

    }

    onShow:{

    console.log("2");

    wx.getSetting(

    success:{

    console.log("onshow getsetting success")

    wx.request(res=>{

    console.log("onShow request success");

    })

    }

    )

    }

    实测: onload和onShow的console在很短的时间内显示,但是后续的完全错乱了。甚至在APP.JS中的请求都在这之后才显示成功。如下为记录:


    1

    2

    onshow getsetting success

    onShow request success

    load request success


    我的理解是 微信小程序中 想要顺序执行代码 只能不断的用promise 回调。太坑了

    2021-06-07
    有用
    回复
  • 无敌是多么的寂寞
    无敌是多么的寂寞
    2021-06-02

    onload 里写了一个request的方法,

    onshow也写了一个request 方法的。

    看调试器的执行时间轴,2个request 是几乎同步执行的。


    2021-06-02
    有用
    回复
  • 铭锋科技
    铭锋科技
    2019-04-13

    其实实践大于理论

    2019-04-13
    有用
    回复
登录 后发表内容