HarmonyOS 鸿蒙Next setTimeout在实现毫秒级延时的时候精度不够,如何获取精确的延时
HarmonyOS 鸿蒙Next setTimeout在实现毫秒级延时的时候精度不够,如何获取精确的延时
应用中需要使用setTimeout获取精确的延时以控制红外模组的帧率,但是在长时间循环运行setTimeout方法之后,会发现setTimeout延迟的误差越来越大,例如设定好40ms的延时,这样帧率是25帧,但是随着长时间的运行,setTimeout误差越来越大,导致帧率不稳定,可能会低于20帧。 想咨询一下该如何获取精确的延时。 红外模组的帧率控制,需要获取精确的延时。
更多关于HarmonyOS 鸿蒙Next setTimeout在实现毫秒级延时的时候精度不够,如何获取精确的延时的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
本地测试屏幕刷新率没有变动,恒定在60帧
onPageShow(): void {
for (let i = 0; i < 10000; i++) {
(() => {
setTimeout(()=>{
let promise: Promise<Array<display.Display>> = display.getAllDisplays();
promise.then((data: Array<display.Display>) => {
console.info('屏幕刷新率 ' + data[0].refreshRate);
})
},40)
})()
}
}
可以尝试使用taskpool.executePeriodically,能否满足您的需求
文档:
该api需要在最新的IDE上使用,IDE下载地址:
更多关于HarmonyOS 鸿蒙Next setTimeout在实现毫秒级延时的时候精度不够,如何获取精确的延时的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html