2***@qq.com
2***@qq.com
  • 发布:2023-12-31 21:52
  • 更新:2024-01-01 22:35
  • 阅读:174

从js传入uts的UTSCallback返回值有办法更改吗,现在在uts调用UTSCallback返回值是固定的

分类:uts

我正在写一个uts插件,插件能够让用户在UTSCallback里写一些运算,我再根据运算结果来决定uts代码的下一步运行,但是现在UTSCallback的返回值是固定的,我很难获取运算的结果。
如果通过设置一个第三方变量,UTSCallback函数体里把运算结果赋值给第三方变量,也可以勉强获取运算结果,但因为UTSCallback是异步的,就要不停轮询这个变量是否更,这对性能造成很大影响。
有什么办法让UTSCallback变成同步并且能返回值吗?

2023-12-31 21:52 负责人:无 分享
已邀请:
2***@qq.com

2***@qq.com (作者)

现在有一种克服办法,就是用async await去等待回调完成,但是我感觉好蠢,下面是代码
uts代码

export class tt {  
    private statu:string = "false";  
    constructor(){  

    }  
    public async check(jscallback:()=>void):Promise<number>{  
        console.log("进入check");  
        jscallback();  
        let time: number = 123;  
        await new Promise((resovle,reason)=>{  
             time = setInterval(()=>{  
                if(this.statu == "true"){  
                    console.log("计时器");  
                    resovle(123)  
                }  
            },1000)  
        })  
        clearInterval(time)  
        console.log("离开check");  

        return 123  
    }  
    public  change():void{  
        this.statu = "true"  
        console.log("进入change");  
    }  
}

js调用

    const a = new tt()  
    a.check(()=>{  
        console.log("进入js回调");  
        a.change()  
    })
  • 2***@qq.com (作者)

    有没有好点的办法?用async加定时器这套这太蠢了

    2024-01-01 22:36

  • 2***@qq.com (作者)

    用async把异步回调函数变成同步函数,再把计算结果挂到变量statu上,这样就能拿到运算结果

    2024-01-01 22:54

要回复问题请先登录注册