Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 同时修改地图安全吗?_Javascript_Node.js - Fatal编程技术网

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不是单线程。