Javascript 同时修改地图安全吗?
我有一张地图,上面有一堆支票的状态。每次检查只会使用Javascript 同时修改地图安全吗?,javascript,node.js,Javascript,Node.js,我有一张地图,上面有一堆支票的状态。每次检查只会使用修改一个键。set如果两个并发检查同时尝试修改映射,是否会出现任何问题 我让setInterval在后台进行一些检查,并在地图中设置检查的状态。在其他语言中,如果两个东西试图同时编辑地图,我会遇到问题。不是实际的代码,但我想知道下面的操作是否安全 var myMap = new Map(); var a = setInterval(someCheckA, 1000); var b = setInterval(someCheckB, 1000)
修改一个键。set
如果两个并发检查同时尝试修改映射,是否会出现任何问题
我让setInterval在后台进行一些检查,并在地图中设置检查的状态。在其他语言中,如果两个东西试图同时编辑地图,我会遇到问题。不是实际的代码,但我想知道下面的操作是否安全
var myMap = new Map();
var a = setInterval(someCheckA, 1000);
var b = setInterval(someCheckB, 1000);
function someCheckA() {
myMap.set('A', 'status is good');
}
function someCheckB() {
myMap.set('B', 'status is good');
}
// do stuff with myMap
不,两个函数同时执行
myMap.set
没有问题,这是因为它们不是同时执行的。JavaScript是单线程的;虽然两个setInterval
s中的功能都将每秒激活一次,但它们会依次激活,而不是同时激活。因此,没有问题。不,两个函数同时执行myMap.set
,这是因为它们没有同时执行。JavaScript是单线程的;虽然两个setInterval
s中的功能都将每秒激活一次,但它们会依次激活,而不是同时激活。因此,没有问题。您能详细说明一下,并给出一些示例代码吗?这个问题问什么还不完全清楚。请记住,Javascript是单一的-threaded@CertainPerformanceupdatedJavascript是单线程的。不存在并发问题。如果您使用的是web workers或服务workers,那么JS不是单线程的。您可以详细说明一下,给出一些示例代码吗?这个问题问什么还不完全清楚。请记住,Javascript是单一的-threaded@CertainPerformanceupdatedJavascript是单线程的。不存在并发问题。如果您使用web workers或service workers,则JS不是单线程。因为他们在引擎盖下使用web workers,而这些实际上是其他线程。因为他们在引擎盖下使用web workers,而这些实际上是其他线程,所以JS不是单线程。