未看到数组更改(其他线程?)

Array changes not seen (by other threads?)

我有一个递归函数,它按顺序执行以下操作(除其他外):

  1. 打印作为参数传递的数组 A
  2. 将一些新值连接到其中: A=A.concat(localList);
  3. 再次打印数组 A
  4. 运行一个 for 循环,每次迭代都会再次调用该函数

虽然打印三明治显示了正确的串联,但我注意到不同的(并行的?)实例不知道其他实例所做的更改。数组不是作为引用传递的吗?

我包含的信息很少,因为我觉得这是我遗漏的一些基本事实。

Array.concat returns 一个新实例。为了保持引用的完整性,您可以像这样连接一个列表:

yourarray.push.apply(yourarray, newitems)

或更现代的变体:

yourarray.push(...newitems)

需要说明的是,如果您使用多线程(Worker),这仍然不起作用,因为在 Worker 之间传递的对象被克隆。