Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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 node.js和websocket:是否可能运行到竞争状态?_Javascript_Node.js_Websocket - Fatal编程技术网

Javascript node.js和websocket:是否可能运行到竞争状态?

Javascript node.js和websocket:是否可能运行到竞争状态?,javascript,node.js,websocket,Javascript,Node.js,Websocket,我不熟悉node.js和websockets 让我们看一段代码,它利用了节点js中的websocket: var myMap = new Map(); //some code here socket.on('next', function(id) { User.findById(id, function (err, entry) { // some code here entry.save(function (err){ m

我不熟悉node.js和websockets

让我们看一段代码,它利用了节点js中的websocket:

var myMap = new Map();
//some code here
socket.on('next', function(id) {    
    User.findById(id, function (err, entry) {
        // some code here
        entry.save(function (err){
            myMap.delete(id);
        }
    }
}
这段代码是否可以在共享变量myMap的竞争条件下运行?用户是一个基于猫鼬的对象


我知道javascript和node.js是单线程的。但是,访问myMap的回调(myMap.delete(id))让我感到困惑。

节点是单线程的,因此
myMap
的更改是一致的。另一方面,回调
myMap.delete
可以通过并发请求为已经删除的项目调用。该节点是单线程的,因此
myMap
的更改是一致的。另一方面,可以通过并发请求为已删除的项目调用callback
myMap.delete