是否有保证在特定时间间隔运行计时器的方法



目前,我有一个异步函数来建立命令队列,还有一个异步功能在setInterval 1ms计时器上调度这些命令。他们都在一起跑步,这很好。问题是,当队列不断增加时,调度之间的时间从正常的1-2ms增加到了150ms,这对结果来说真的是不可接受的(动画(。我也无法在调度阶段之前同步运行队列构建,因为更改必须在用户输入时立即可视化。

目前,队列构建的速度比调度快得多(尽管队列项构造函数比调度函数重得多(。

有没有什么方法可以使调度立即/更高优先级,这样它就不会等待程序中的任何其他内容?

dispatchTimer = setInterval(function() {
dispatch();
}, 1);
async function constructElement {
// making calculations
queue.push(element);
}
async function dispatch() {
if (transmitequeue.length > 0) {
let element = queue.splice(0, 1)[0];
// dispatching here  
}
}

如果您使用setInterval方法来实现这一点,那么延迟可能是由于系统处理能力不足和其他可能的问题。我建议您将Window.requestAnimationFrame(文档(用于动画,因为它允许每次重新绘制屏幕时运行语句。

这看起来像是await的作业,您希望在setInterval回调中等待调度函数返回的Promise。我相信这会";取消优先级";队列会堆积起来,因为您将等待调度Promise来解决每个ms。

最新更新