久成视频在线观看免费-先锋影音资源影音中在线不卡-久久精品—区二区三区美女-久久国产免费一区二区三区

<track id="icesm"></track>

    1. 龍巖易富通網(wǎng)絡(luò)科技有限公司

      龍巖小程序開發(fā),龍巖分銷系統(tǒng)

      uniapp中onLaunch和onload的先后執(zhí)行順序

      2023.06.02 | 1730閱讀 | 0條評論 | 小程序

      onLaunch與onload分別是APP生命周期與頁面生命周期,理論上應(yīng)該先執(zhí)行onLaunch 后執(zhí)行頁面生命周期onLoad。然而實際上并非如此,在執(zhí)行onlaunch的同時,也會執(zhí)行onLoad生命周期,而在實際開發(fā)中往往需要優(yōu)先執(zhí)行onlaunch后再執(zhí)行onLoad,因此可以使用當(dāng)前方法解決。

      一、main.js添加如下代碼?

      代碼如下(示例)

      // 讓頁面的 onLoad 在 onLaunch 之后執(zhí)行

      Vue.prototype.$onLaunched = new Promise(resolve => {

          Vue.prototype.$isResolve = resolve

      })


      二、在 App.vue 的 onLaunch 中增加代碼 this.$isResolve();

      代碼如下(示例):

      //app.vue生命周期中,onlaunch執(zhí)行時,執(zhí)行this.$isResolve()

      onLaunch () {

              //發(fā)送請求

          uni.request({

              success: loginRes => {       

                  // 業(yè)務(wù)邏輯

                  // ...

                  // 當(dāng)執(zhí)行完業(yè)務(wù)邏輯,需要同步onload時,調(diào)用一下

                  this.$isResolve()           

              }

          })

      }


      三、在頁面 onLoad 中增加代碼 await this.$onLaunched;

      代碼如下(示例):

      //onLoad 生命周期函數(shù)前,加async/await,用此方法同步執(zhí)行順序

              async onLoad() {

                     //async/await,當(dāng)執(zhí)行完APP生命周期中的onlaunch,再執(zhí)行頁面中的業(yè)務(wù)邏輯

                     await this.$onLaunched;

                    

                     //執(zhí)行頁面中的業(yè)務(wù)邏輯

                     //...

              },


      個人理解

      1先給onLaunch方法套一個promise實例,執(zhí)行成功后再執(zhí)行全局掛載的方法,標(biāo)識當(dāng)前已經(jīng)執(zhí)行完畢。
      2.在頁面中利用async/await 同步執(zhí)行代碼的方法,實現(xiàn)onLaunch 在 onLoad 之后執(zhí)行


      版權(quán)屬于:瞭月

      本文鏈接:https://www.lervor.com/archives/128/


      贊 (

      發(fā)表評論