<i id="er8bl"><thead id="er8bl"><li id="er8bl"></li></thead></i>
    1. <wbr id="er8bl"></wbr>
      <u id="er8bl"><tr id="er8bl"><samp id="er8bl"></samp></tr></u>
      1. <wbr id="er8bl"><ins id="er8bl"><p id="er8bl"></p></ins></wbr>
      2. <i id="er8bl"><sub id="er8bl"><pre id="er8bl"></pre></sub></i>
        1. <wbr id="er8bl"></wbr>
        <u id="er8bl"></u>

      3. 龍巖易富通網絡科技有限公司

        龍巖小程序開發,龍巖分銷系統

        uniapp中onLaunch和onload的先后執行順序

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

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

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

        代碼如下(示例)

        // 讓頁面的 onLoad 在 onLaunch 之后執行

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

            Vue.prototype.$isResolve = resolve

        })


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

        代碼如下(示例):

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

        onLaunch () {

                //發送請求

            uni.request({

                success: loginRes => {       

                    // 業務邏輯

                    // ...

                    // 當執行完業務邏輯,需要同步onload時,調用一下

                    this.$isResolve()           

                }

            })

        }


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

        代碼如下(示例):

        //onLoad 生命周期函數前,加async/await,用此方法同步執行順序

                async onLoad() {

                       //async/await,當執行完APP生命周期中的onlaunch,再執行頁面中的業務邏輯

                       await this.$onLaunched;

                      

                       //執行頁面中的業務邏輯

                       //...

                },


        個人理解

        1先給onLaunch方法套一個promise實例,執行成功后再執行全局掛載的方法,標識當前已經執行完畢。
        2.在頁面中利用async/await 同步執行代碼的方法,實現onLaunch 在 onLoad 之后執行


        版權屬于:瞭月

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


        贊 (

        發表評論

        91精品久久人人妻人人爽人人_亚洲日本电影久久_九九精品插国产视频_亚洲一级二级黄片