如何在Javascript中实现非常高效的队列?

如何在Javascript中实现非常高效的队列?,javascript,queue,Javascript,Queue,我有一个事件处理程序,它在每次事件发生时都执行一些繁重的任务。现在这些事件发生得很快,处理程序的庞大性导致它延迟或错过其中一些事件 我希望事件处理程序将事件详细信息排队,并将任务的庞大部分委托给另一个异步函数,如setInterval(handler2,time interval)。handler2将使事件出列并执行繁重的任务 我想知道如何创建队列。我看到了其他答案,他们在a列表上使用shift()操作,该列表在O(n)时间内运行 假设我是JS的初学者。如果您能更准确地描述事件,这会有所帮助。常

我有一个事件处理程序,它在每次事件发生时都执行一些繁重的任务。现在这些事件发生得很快,处理程序的庞大性导致它延迟或错过其中一些事件

我希望事件处理程序将事件详细信息排队,并将任务的庞大部分委托给另一个异步函数,如
setInterval(handler2,time interval)
handler2
将使事件出列并执行繁重的任务

我想知道如何创建队列。我看到了其他答案,他们在a
列表上使用
shift()
操作,该列表在
O(n)
时间内运行


假设我是JS的初学者。

如果您能更准确地描述事件,这会有所帮助。常见的批量事件有mousemove、resize和key事件,这些事件是其中的一部分,还是从服务器轮询数据?如果是后者,每个事件涉及多少数据?在哪里/如何使用庞大部分的结果,是否是DOM操作,只是存储一些数据等
setInterval
没有创建另一个线程来运行其回调,总的执行时间将与运行事件处理程序本身的庞大部分所花费的时间相同。也许你可以从WebWorkers中获益?我有几个mousemove事件监听器。用户可以将鼠标移动到数千个这样的元素上。每次触发事件时,处理程序都会根据鼠标的当前和先前位置进行一些计算。如果setInterval不是异步的,则可以。我只需要它定期使用队列元素并执行这些计算,队列将由事件处理程序填充。我愿意接受建议。我之前链接的例子有点昂贵,这里有一个固定的。非常好。顺便说一句,我们可以在一(1)个时间进行轮班操作。移位是O(n),因为每次它从顶部弹出一个元素,然后执行索引以获取列表的长度,从而导致线性运行时间。我不希望它做索引,而是希望做头和尾指针比较,以避免下溢,就像我们在C语言中做的那样。可能吗?我是JS的初学者,如果我们有C中那样的指针和结构,我的生活会更简单。但是谢谢你参与我的问题。如果顺序不重要,你可以使用
pop
从数组中取出最后一个元素。或者保留索引簿,只读取一个值而不改变数组。如果您能更准确地描述事件,这会有所帮助。常见的批量事件有mousemove、resize和key事件,这些事件是其中的一部分,还是从服务器轮询数据?如果是后者,每个事件涉及多少数据?在哪里/如何使用庞大部分的结果,是否是DOM操作,只是存储一些数据等
setInterval
没有创建另一个线程来运行其回调,总的执行时间将与运行事件处理程序本身的庞大部分所花费的时间相同。也许你可以从WebWorkers中获益?我有几个mousemove事件监听器。用户可以将鼠标移动到数千个这样的元素上。每次触发事件时,处理程序都会根据鼠标的当前和先前位置进行一些计算。如果setInterval不是异步的,则可以。我只需要它定期使用队列元素并执行这些计算,队列将由事件处理程序填充。我愿意接受建议。我之前链接的例子有点昂贵,这里有一个固定的。非常好。顺便说一句,我们可以在一(1)个时间进行轮班操作。移位是O(n),因为每次它从顶部弹出一个元素,然后执行索引以获取列表的长度,从而导致线性运行时间。我不希望它做索引,而是希望做头和尾指针比较,以避免下溢,就像我们在C语言中做的那样。可能吗?我是JS的初学者,如果我们有C中那样的指针和结构,我的生活会更简单。但是谢谢你参与我的问题。如果顺序不重要,你可以使用
pop
从数组中取出最后一个元素。或者保留索引簿,只读取一个值而不改变数组。