node.js ncp(asynchronousrecursion拷贝实用程序)未调用callback

我是node.js的新手,也许我做错了什么。 这是非常stream行的asynchronousrecursion复制实用程序npmjs.org/package/ncp。

我试图并行运行它:

var ncp = require('ncp').ncp; var dirs = [ ['test/from/1', 'test/to/1'], ['test/from/2', 'test/to/2'], ['test/from/3', 'test/to/3'] ]; var copyDirAsync = function (dir) { ncp(dir[0], dir[1], function (err) { console.log('done: ' + dir[1]); }); } for (var i = 0; i < dirs.length; ++i) { copyDirAsync(dirs[i]); } 

所以,所有的dir复制就好了。 不过,我只有一个随机目录打印一个console.log消息。 另外两个没有到达。 该程序刚刚存在。 如果我添加一个15秒的超时,以便节点继续运行一段时间,callback也不会到达。 我认为这是一个ncp的问题,然而每天下载30K的1个月大的释放0.5.0,目前还没有报道的问题,再加上我是node.js的新手,我只是假设我不明白关于节点的东西。

首先阅读asynchronous迭代模式

现在,你可以像这样使用asynchronous模块,特别是async.series ;

 var ncp = require('ncp').ncp , async = require('async'); var dirs = [ ['test/from/1', 'test/to/1'], ['test/from/2', 'test/to/2'], ['test/from/3', 'test/to/3'] ]; var copyDirAsync = function (dir, done) { ncp(dir[0], dir[1], function (err) { if (err) return done(err); console.log('done: ' + dir[1]); done(); }); } async.each(dirs, copyDirAsync, function(err){ console.log(err); });