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

ドキュメントに従って、2 番目の引数は次のとおりです。

iterator(item, callback) - 配列内の各アイテムに適用する関数。

罰金。

イテレータには、エラー (null の場合もある) と変換されたアイテムで完了すると呼び出されるコールバック (err、変換済み) が渡されます。

それはこれに準拠していないと思いますし、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
    }
);
4

2 に答える 2

6

fs.statは 2 つのパラメーターを受け入れます。1 つ目はファイル、2 つ目はコールバックです。ノードの規則により、エラーとファイルの統計の 2 つのパラメーターを受け入れます。

fs.stat(path, callback)

これは次のように見ることができます

fs.stat(path, function(err, stats){
  // ...
});

これが機能する理由であり、fs.stat必要なものを正確に渡すことによって呼び出されます。

詳細: http://nodejs.org/api/fs.html#fs_fs_stat_path_callback

于 2013-05-08T16:34:50.360 に答える
1

http://nodejs.org/api/fs.html#fs_fs_stat_path_callbackのドキュメントから

fs.stat(パス、コールバック)

非同期統計 (2)。コールバックは 2 つの引数 (err、stats) を取得します。stats は fs.Stats オブジェクトです。詳細については、以下の fs.Stats セクションを参照してください。

fs.stat コールバックが (err, stats) を返すため、以下は正常に動作します。

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')
})
于 2013-05-08T16:33:41.313 に答える