我正在学习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:)
答案 0 :(得分:1)
node.js
是单线程的,它不会中断同步执行。
仍然,你正在修改数组,同时迭代它的长度,这可能会导致跳过元素。 此外,您的事件不准备为同一个数组元素触发两次。