我怎样才能asynchronous删除多个文件?

假设我有一个包含多个文件path的数组。 我想要asynchronous删除这些文件。

var files = ['file1.txt', 'file2.txt']; fs.unlink(..., callback()) 

我碰到这个解决scheme删除node.js中的几个文件,但我认为它违反了node.js的做法(for循环内的asynchronous函数)。 有没有其他更好的解决scheme呢?

尝试recursion选项(代码从您的链接在问题中):

 function deleteFiles(files, callback){ var i = files.length; var file = files.pop(); if ( file == undefined ) { callback(); } else { // do the unlinking ... deleteFiles(files, callback); } } 

如果要asynchronous运行任意任务列表(取消链接文件),但是知道完成时间,则可以使用async.js模块。 它可以以串行和并行方式运行任务。

因此,将所有的unlink函数调用推入数组,然后调用async.parallel()并让它们飞行。 然后,当他们完成了,你在一个单一的pipe理callback。

 var files = ['file1.txt', 'file2.txt']; var myParallelTasks = []; files.forEach( function( fileName ) { myParallelTasks.push( fs.unlink( fileName, function(callback) { callback(); }) ); } async.parallel( myParallelTasks, function() { // all done console.log( "all done" ); });