• 淘宝小程序使用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
  • 相关阅读:
    C++ | Int转十六进制字符串
    Qt | QML Image SSL handshake failed
    《大话数据结构》第一章 数据结构绪论
    8组Beta冲刺4/5
    8组Beta冲刺1/5
    8组Beta冲刺3/5
    8组Beta冲刺2/5
    8组Beta冲刺5/5
    软工实践个人总结
    8组Beta冲刺总结
  • 原文地址:https://www.cnblogs.com/nomanisaisland/p/14051887.html
Copyright © 2020-2023  润新知