收藏
回答

appjs的onLaunch与页面onLoad执行先后的问题

  1. 当小程序加载的时候appjs里的接口数据还没返回首页的请求就已经发出去了,这样就导致在首页请求接口或者是逻辑判断的时候拿不到数据从而报错。

  2. 因为产品有分享功能,分享产品详情页面给别人,打开后也会遇到上面说的情况,还有就是当小程序在后台运行时,退出来打开别人分享的链接,这时候是不是appjs里的onLaunch是不是不会执行?

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

6 个回答

  • hexford~🐶
    hexford~🐶
    2019-04-25

    请求接口本身都是异步的,也无法保证 onLaunch 执行完了再执行 onLoad

    2019-04-25
    有用
    回复
  • Api调用师
    Api调用师
    2023-07-07

    是这样的,因为app只是共用的入口js文件,所以和page视图逻辑是异步执行的,谁也不阻塞谁,这就涉及到app和page的异步问题,不过现在已经有完美的解决方案了。

    小程序app与page异步问题的最佳实践? - 微信开放社区 https://developers.weixin.qq.com/community/develop/article/doc/00002ac57208f0e7335d111f156013

    2023-07-07
    有用 1
    回复
  • 禾店科技
    禾店科技
    2021-05-08

    uniapp中,app.vue里的onLaunch中如果有异步方法,比如登录方法,返回结果可能会在页面的 onLoad 之后,为了让页面的 onLoad 在 onLaunch 之后执行,使用以下解决方案:

    1、main.js添加如下代码

    2、在 App.vue 的 onLaunch 中增加代码 this.$isResolve()

    这个方法必须在你的业务如ajax执行完毕后再执行

    3、在页面 onLoad 中增加代码 await this.$onLaunched

    注意onload要添加async,否则编译不过去

    2021-05-08
    有用 1
    回复
  • luke
    luke
    2020-06-12

    小程序是真的 不方便

    2020-06-12
    有用 1
    回复
  • 2019-08-14

    处理好异步操作;app.js onLaunch只有在冷启动时候才会被重新执行

    2019-08-14
    有用
    回复
  • 老张
    老张
    2019-04-25

    我们都是按这两事件的先后顺序是随机来处理的。

    2019-04-25
    有用
    回复 4
    • zry
      zry
      2019-04-25

      可以细说一下吗,不太明白

      2019-04-25
      回复
    • 老张
      老张
      2019-04-25回复zry

      onLaunch和onLoad是异步的。

      各执行各的,里面的代码,谁先谁后,完全不可知。

      2019-04-25
      回复
    • zry
      zry
      2019-04-25回复老张

      额,我们目前就是这样的,但是有时候需要在首页判断一些数据就容易判断不到,因为拿不到数据

      2019-04-25
      回复
    • 老张
      老张
      2019-04-25回复zry

      知道这种情况了,居然还有什么拿不到数据的事,想不出有这样的需求会实现不了的。

      2019-04-25
      回复
登录 后发表内容