添加到一个数组中 read/deleted from in an interval

Add to an array being read/deleted from in an interval

将对象添加到 javascript 数组的最佳做法是什么,而它当前正在区间方法中使用?

function someEvent()
{
    array.push("something");
}

function update()
{
    array.forEach(function(o, i, a))
    {
       // do something with the object and delete it 
    });
}

var updateInterval = setInterval(update, 1000);

这在 Angular 上下文中使用。 我知道 Javascript 中有一些东西,比如调用一个函数永远不会在另一个函数完成之前调用该函数,什么适用于间隔和像这样使用数组?

出于您指定的原因,修改 setInterval 正在使用的数据不会导致任何问题。由于 JavaScript 的单线程特性。 Setinterval 创造了并发的假象,但如果其他代码是 运行 它会进入队列,因此不会有任何线程错误。

因此,即使我们不知道是否会首先调用点击处理程序或 setInterval 处理程序,我们也可以保证它们不会被调用并发.

this answer 中查看更多详细信息。