我必须异步复制大量文件(如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次。之后它不再复制了。它与内存或异步任务的限制有关?
任何帮助将不胜感激!
答案 0 :(得分:2)
复制功能采用回调,这通常是一个很好的线索,它是异步的。这意味着即使副本没有完成,for循环仍将继续运行,这意味着您只排队了25,000次复制操作!
有几种方法可以解决这个问题,但最常见的方法是使用async模块。
var async = require('async');
async.forEachOf(origin, function (file, i, callback) {
cp(file, dest[i], function(err){
callback();
});
})
这不会进行到循环的下一次迭代,直到调用callback
。
答案 1 :(得分:0)
你可以用这个复制异步,
arg="$@"
firstChar=$(eval "$arg" | cut -c 1)
info =&gt; https://www.npmjs.com/package/fs-extra