99热,在线视频免费精品,亚洲综合视频在线观看,久久免费高清视频,九九热视频在线播放,日韩精品在线播放视频,99久久精品免费视频

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

龍巖小程序開(kāi)發(fā),龍巖分銷(xiāo)系統

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

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

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

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

代碼如下(示例)

// 讓頁(yè)面的 onLoad 在 onLaunch 之后執行

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

    Vue.prototype.$isResolve = resolve

})


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

代碼如下(示例):

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

onLaunch () {

        //發(fā)送請求

    uni.request({

        success: loginRes => {       

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

            // ...

            // 當執行完業(yè)務(wù)邏輯,需要同步onload時(shí),調用一下

            this.$isResolve()           

        }

    })

}


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

代碼如下(示例):

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

        async onLoad() {

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

               await this.$onLaunched;

              

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

               //...

        },


個(gè)人理解

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


版權屬于:瞭月

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


贊 (

發(fā)表評論

安西县| 芦山县| 泰安市| 宜兰县| 眉山市| 南充市| 克东县| 贡觉县| 三台县| 禹城市| 台山市| 托里县| 霍城县| 高台县| 突泉县| 定安县| 周至县| 肥城市| 华阴市| 大竹县| 东光县| 游戏| 太原市| 湖口县| 孟连| 临安市| 彩票| 鲁山县| 鹤岗市| 昌平区| 镶黄旗| 安宁市| 界首市| 南木林县| 五莲县| 泗阳县| 沈阳市| 庐江县| 浮山县| 漳平市| 石棉县|