我必须异步复制大量文件(比如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次之间。在那之后,它不再复制。是否与内存或异步任务的限制有关?
任何帮助都将不胜感激!
发布于 2016-06-22 05:00:28
copy函数接受一个回调,这通常是一个很好的线索,表明它是异步的。这意味着,即使复制尚未完成,for循环仍将继续运行,这意味着您刚刚排队执行了25,000个复制操作!
有几种方法可以解决这个问题,但最常见的方法是使用async模块。
var async = require('async');
async.forEachOf(origin, function (file, i, callback) {
cp(file, dest[i], function(err){
callback();
});
})在调用callback之前,这不会继续循环的下一次迭代。
发布于 2016-06-22 11:13:47
你可以用这个复制异步,
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 filehttps://stackoverflow.com/questions/37954358
复制相似问题