Node.js 方法不返回任何响应,挂起请求
Node.js method does not return any response, pending request
使用node.js+express.js的简单上传方法:
upload: function(req, res, next){
//go over each uploaded file
async.each(req.files.upload, function(file, cb) {
async.auto({
//create new path and new unique filename
metadata: function(cb){
//some code...
cb(null, {uuid:uuid, newFileName:newFileName, newPath:newPath});
},
//read file
readFile: function(cb, r){
fs.readFile(file.path, cb);
},
//write file to new destination
writeFile: ['readFile', 'metadata', function(cb,r){
fs.writeFile(r.metadata.newPath, r.readFile, function(){
console.log('finished');
});
}]
}, function(err, res){
cb(err, res);
});
}, function(err){
res.json({success:true});
});
return;
}
该方法循环访问每个上传的文件,创建一个新文件名,并将其写入元数据中的给定位置集。
console.log('finished');
在写入完成时触发,但客户端永远不会收到响应。2 分钟后,请求被取消,但文件已上传。
知道为什么此方法不返回任何响应吗?
您正在使用 readFile
,它也是异步的,工作原理如下:
fs.readFile('/path/to/file',function(e,data)
{
if (e)
{
throw e;
}
console.log(data);//file contents as Buffer
});
我可以在这里传递对函数的引用,以解决这个问题,但是 IMO,简单地使用 readFileSync
会更容易,它直接返回缓冲区,并且可以毫无问题地传递给writeFile
:
fs.writeFile(r.metadata.newPath, r.readFileSync, function(err)
{
if (err)
{
throw err;
}
console.log('Finished');
});
分别检查文档中的readFile
和writeFile
相关文章:
- JavaScript执行暂时挂起页面
- 是定义的操作系统睡眠/挂起期间setTimeout的行为
- Chrome浏览器“;挂起”;同时在循环中执行AJAX请求
- fullcalendar在删除导致浏览器挂起的多个事件时速度较慢
- 应用将图表转换为图像的jqplot代码时Chrome挂起
- 如何在不使用Internet Explorer的情况下从未挂起的HTML文件执行程序
- MongoDB collection.find()查询挂起
- 使用子字符串方法时应用程序挂起的原因
- 如何在AngularJS中取消挂起的请求
- 从node.js应用程序调用Mongoose Model.save()时挂起
- Chrome,Safari在从本地存储读取时挂起,而Firefox很好
- IE 10 挂起 XMLHttpRequest 6 分钟,然后响应请求(使用 AngularJS 实现 CRSF)
- 挂起 JavaScript 键关闭事件
- HERE 映射 JS API v3 集群提供程序挂起,添加许多数据点
- Ajax 调用挂起在 jQuery 中
- writeln img src将数据提交到外部系统-Firefox和IE挂起
- 在表中显示ajax响应不起作用
- 在jQuery中,.state()如何确定一个承诺是挂起的、已解决的还是被拒绝的
- 挂起的回调:在每次回调返回之前返回响应
- Node.js 方法不返回任何响应,挂起请求