[英]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.