添加到正在读取/删除的数组中

时间:2015-08-02 20:08:26

标签: javascript angularjs setinterval

在区间方法中当前正在使用javascript数组时,将对象添加到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中有一些东西比调用函数在其他函数完成之前永远不会调用该函数,什么适用于区间和使用这样的数组?

1 个答案:

答案 0 :(得分:2)

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

因此,即使我们不知道例如点击处理程序还是setInterval处理程序将首先调用 ,我们可以保证它们不会被同时调用

this answer中查看更多详情。