Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.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_Json_Node.js - Fatal编程技术网

Javascript 这是异步代码还是阻塞代码?

Javascript 这是异步代码还是阻塞代码?,javascript,json,node.js,Javascript,Json,Node.js,如果我有JSON.stringify在writeFile中,这就是阻塞代码。假设它是一个大文件。这就是为什么当我在一秒钟内多次按下触发此api端点的按钮时,会出现错误连接被拒绝的原因吗 app.patch('/', function(req, res) { ...some query fs.writeFile(path.join(__dirname, "../../") + 'Data/deals.json', JSON.stringify(tickets), function (err) {

如果我有
JSON.stringify
writeFile
中,这就是阻塞代码。假设它是一个大文件。这就是为什么当我在一秒钟内多次按下触发此api端点的按钮时,会出现错误
连接被拒绝的原因吗

 app.patch('/', function(req, res) {
...some query
fs.writeFile(path.join(__dirname, "../../") + 'Data/deals.json', JSON.stringify(tickets), function (err) {
        if (err) {
            console.log(err);
            return res.status(400).json({error: err});
        }
        return res.status(200).json({success: true, message: 'Deal Updated successfully'});
    });
})
编辑#1:
JSON.stringify
同步地将对象解析为字符串。但是您没有在
补丁
函数中调用
JSON.stringify
,而不是在writeFIle中调用

原件: 它是异步的。如果要同步写入文件,必须使用
writeFileSync

欲了解更多信息,请访问

例子
可能是因为写入操作尚未完成,因此文档被锁定在文件系统中(如果您在windows中打开文本文件并尝试同时重命名它,也会发生同样的情况)。如果我确实进入定义“大文件”,则我获取
加载资源失败:net::ERR\u CONNECTION\u拒绝
JSON.stringify()非常快。此外,获得“连接被拒绝”并不是阻塞事件循环(这会导致请求挂起)的症状。@robertklep你是对的,nodemon是个问题。不,这是阻塞代码。。。当我做补丁时,在那之后,<1000ms,我确实得到了相同的资源。。。我获取
加载资源失败:net::ERR\u连接被拒绝
。。。我认为这是因为JSON.stringify是V8代码-纯JS阻塞代码。。。它不在事件循环上运行…也许…是的,tnx,nodemon是个问题
// Async callback will called after finish
// Non-Blocking
fs.writeFile(file, data[, options], callback)

// write to file with return the result, may throw exception    
// Blocking
fs.writeFileSync(file, data[, options])