async.map(['file1','file2','file3'], fs.stat, function(err, results){
// results is now an array of stats for each file
});
根据documentation,第二个参数是:
iterator(item,callback) - 一个应用于每个项目的函数 阵列。
精细。
迭代器传递一个必须的回调(错误,转换) 一旦它完成了一个错误(可以为null)并被调用 改造后的项目。
我认为fs.stat
不符合这一点,我会说这不起作用。
应该是这样的:
async.map(['file1','file2','file3'],
function (file, complete) {
fs.stat(file, function (err, stat) {
complete(err, stat)
});
}, function(err, results){
// results is now an array of stats for each file
}
);
答案 0 :(得分:6)
fs.stat
接受两个参数,第一个是文件,第二个是回调,按节点约定接受两个参数,一个错误和文件的统计信息:
fs.stat(path, callback)
可以被视为
fs.stat(path, function(err, stats){
// ...
});
这就是它工作的原因,fs.stat
通过准确传递它所需要的来调用。
答案 1 :(得分:1)
来自http://nodejs.org/api/fs.html#fs_fs_stat_path_callback
的文档异步统计(2)。回调得到两个参数(错误,统计),其中stats是fs.Stats对象。有关详细信息,请参阅下面的fs.Stats部分。
由于fs.stat回调返回(错误,统计),以下工作正常
async.map(['file1','file2','file3'], fs.stat, function(err, results){
// results is now an array of stats for each file
});
为了做同样的事情,你自己传递一个具有适当回调的函数
var async = require('async')
var inspect = require('eyespect').inspector();
function custom(param, callback) {
var result = 'foo result'
var err = null
callback(err, result)
}
var items = ['item1', 'item2']
async.map(items, custom, function (err, results) {
inspect(results, 'results')
})