[英]Copying large amount of files with nodejs?
我必须异步复制大量文件(例如25000)。 我正在使用此库: https : //github.com/stephenmathieson/node-cp 。
这是我的代码:
for(var i = 0; i < 25000; i++){
cp(origin[i], dest[i], function(err){
console.log("successfully copied")
})
}
它完成了循环,但不会复制所有项目。 “成功复制”被调用6000至8000次。 之后,它将不再复制。 它与内存有关还是对异步任务有限制?
任何帮助,将不胜感激!
复制函数接受一个回调,这通常是异步的一个很好的线索。 这意味着即使复制尚未完成,for循环仍将继续运行,这意味着您仅排队25,000个复制操作!
有几种方法可以解决此问题,但最常见的方法是使用异步模块。
var async = require('async');
async.forEachOf(origin, function (file, i, callback) {
cp(file, dest[i], function(err){
callback();
});
})
在callback
之前,不会进行循环的下一个迭代。
您可以与此复制异步,
var fs = require('fs-extra')
fs.copy('/tmp/myfile', '/tmp/mynewfile', function (err) {
if (err) return console.error(err)
console.log("success!")
}) // copies file
fs.copy('/tmp/mydir', '/tmp/mynewdir', function (err) {
if (err) return console.error(err)
console.log('success!')
}) // copies directory, even if it has subdirectories or file
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.