为什么async.map函数与本机fs.stat函数一起使用?

gre*_*emo 2 asynchronous node.js node-async

async.map(['file1','file2','file3'], fs.stat, function(err, results){
    // results is now an array of stats for each file
});
Run Code Online (Sandbox Code Playgroud)

根据文档,第二个参数是:

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
    }
);
Run Code Online (Sandbox Code Playgroud)

Alb*_*gni 6

fs.stat 接受两个参数,第一个是文件,第二个是回调,按节点约定接受两个参数,一个错误和文件的统计信息:

fs.stat(path, callback)
Run Code Online (Sandbox Code Playgroud)

可以看作是

fs.stat(path, function(err, stats){
  // ...
});
Run Code Online (Sandbox Code Playgroud)

这就是它工作的原因,fs.stat通过准确传递它所需要的东西来调用它.

更多信息:http://nodejs.org/api/fs.html#fs_fs_stat_path_callback