Javascript Array.forEach线程安全

Javascript Array.forEach线程安全,javascript,node.js,thread-safety,Javascript,Node.js,Thread Safety,我正在使用一个数组来存储已连接客户端的列表 每当我希望遍历客户机列表时,我都会这样做:clients.forEach(…) 我的问题是,这是线程安全的吗?如果客户端在a客户端期间断开连接(并因此从客户端中删除)。forEach(…)语句?简短的回答是肯定的 forEach是一个同步进程,这意味着在进程完成对数组执行forEach循环之前,不会修改数组 这是我从阅读中得到的理解: 虽然简短的答案是正确的,但推理是错误的。forEach是同步的,因此没有其他代码同时运行。您还应该提到Node.js是

我正在使用一个数组来存储已连接客户端的列表

每当我希望遍历客户机列表时,我都会这样做:
clients.forEach(…)

我的问题是,这是线程安全的吗?如果客户端在a
客户端期间断开连接(并因此从
客户端中删除)。forEach(…)
语句?

简短的回答是肯定的

forEach是一个同步进程,这意味着在进程完成对数组执行forEach循环之前,不会修改数组

这是我从阅读中得到的理解:

虽然简短的答案是正确的,但推理是错误的。forEach是同步的,因此没有其他代码同时运行。您还应该提到Node.js是单线程的,因此线程问题通常可以忽略。如果您将数组作为传递给forEach的fn的一部分进行更改,该怎么办?x.forEach(函数(a){console.log(a);x.push(a)});其中x是作用域中的初始数组。语句“数组不会被修改”不完全正确。数组仍然可以作为传递给forEach的fn的一部分进行修改。可以将数组作为传递给forEach的函数的一部分进行修改,这是正确的,但在这种特定情况下,不会修改数组。