淘宝小程序使用promise实现onshow等待执行

最近遇到一个业务场景,需要跳转到下个页面,等用户操作完后,返回当前页面,当前页面的数据可以同步更新用户的操作数据。使用promise对象可以做到这点,promise对象内部保存着一个未来才会结束的事件,并且promise对象的状态只有异步才会触发状态改变(状态改变后无法更改)。刚开始直接在跳转事件内部注册onshow事件,但是出现一个bug,onshow事件只会执行一次,后续就无法再触发手动注册的事件了,可能是淘宝小程序内部实现问题,微信小程序暂时未做测试。后续直接注册一个空的onshow生命周期,在onshow生命周期内部调用需要触发的事件,在需要触发的事件触发后代码才会执行到下一步(代码必须要是同步的,才可以实现这个功能)。

// 初步实现代码(淘宝小程序有bug版)

async func () {
    // 跳转代码
    const onShowPromise = new Promise((resolve) => {
        this.onShow = () => {
            this.onShow = () => { };   // 将onShow初始化
            resolve();
        };
    });
    await onShowPromise
    // 需要更新的代码
}


// 完善版
onShow1(){}, // 防止为空
onShow(){
  onShow1(){}
}
async func () {
    // 跳转代码
    const onShowPromise = new Promise((resolve) => {
        this.onShow1 = () => {
            this.onShow1 = () => { };   // 将onShow初始化
            resolve();
        };
    });
    await onShowPromise
    // 需要更新的代码
}

目前没有遇到任何问题

NO MAN IS A ISLAND
原文地址:https://www.cnblogs.com/nomanisaisland/p/14051887.html