我正在写一个uts插件,插件能够让用户在UTSCallback里写一些运算,我再根据运算结果来决定uts代码的下一步运行,但是现在UTSCallback的返回值是固定的,我很难获取运算的结果。
如果通过设置一个第三方变量,UTSCallback函数体里把运算结果赋值给第三方变量,也可以勉强获取运算结果,但因为UTSCallback是异步的,就要不停轮询这个变量是否更,这对性能造成很大影响。
有什么办法让UTSCallback变成同步并且能返回值吗?
2***@qq.com
- 发布:2023-12-31 21:52
- 更新:2024-01-01 22:35
- 阅读:174
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