异步操作数组时的副作用

时间:2016-08-24 06:29:16

标签: javascript node.js

我正在学习node.js atm,现在我问自己:

如何"线程安全"是正常的阵列?

示例:

var myArr = ["Alpha", "Beta", "Gamma", "Delta"];

ee.on('event', function(itemString) {
    //Loop over an Array that could change its length while looping through
    for(var i=0; i<myArr.length; i++) {
        // delete the item out of the array
        if(myArr[i] == itemString)
            myArr.splice(i,1);
    }
});

如果在ee-Object上触发了多个事件,那么有可能for循环会失败,因为索引已经被拼接掉了吗?

或者说不同:是否有办法确保循环不会跳过或失败,因为任何可能被同一事件的另一个回调调用删除的元素?

THX:)

1 个答案:

答案 0 :(得分:1)

node.js是单线程的,它不会中断同步执行。

仍然,你正在修改数组,同时迭代它的长度,这可能会导致跳过元素。 此外,您的事件不准备为同一个数组元素触发两次。