未看到数组更改(其他线程?)
Array changes not seen (by other threads?)
我有一个递归函数,它按顺序执行以下操作(除其他外):
- 打印作为参数传递的数组 A
- 将一些新值连接到其中:
A=A.concat(localList);
- 再次打印数组 A
- 运行一个 for 循环,每次迭代都会再次调用该函数
虽然打印三明治显示了正确的串联,但我注意到不同的(并行的?)实例不知道其他实例所做的更改。数组不是作为引用传递的吗?
我包含的信息很少,因为我觉得这是我遗漏的一些基本事实。
Array.concat returns 一个新实例。为了保持引用的完整性,您可以像这样连接一个列表:
yourarray.push.apply(yourarray, newitems)
或更现代的变体:
yourarray.push(...newitems)
需要说明的是,如果您使用多线程(Worker),这仍然不起作用,因为在 Worker 之间传递的对象被克隆。
我有一个递归函数,它按顺序执行以下操作(除其他外):
- 打印作为参数传递的数组 A
- 将一些新值连接到其中: A=A.concat(localList);
- 再次打印数组 A
- 运行一个 for 循环,每次迭代都会再次调用该函数
虽然打印三明治显示了正确的串联,但我注意到不同的(并行的?)实例不知道其他实例所做的更改。数组不是作为引用传递的吗?
我包含的信息很少,因为我觉得这是我遗漏的一些基本事实。
Array.concat returns 一个新实例。为了保持引用的完整性,您可以像这样连接一个列表:
yourarray.push.apply(yourarray, newitems)
或更现代的变体:
yourarray.push(...newitems)
需要说明的是,如果您使用多线程(Worker),这仍然不起作用,因为在 Worker 之间传递的对象被克隆。