NodeJS如何创建异步函数然后调用它

时间:2015-11-04 10:01:35

标签: node.js asynchronous

我想创建一个函数来列出某个目录中的文件,并通过扩展名对其进行过滤:

这是我的代码看起来像:

var fs = require('fs'),
    path = require('path');

var filterList = function (path, ext) {
    return fs.readdir(path, function (err, files) {
    if (err) {
            console.log(err);
        } else {
            for (var i = 0; i < files.length; i++) {
                if (path.extname(files[i]) === '.' + ext) {
                    return console.log(files[i]);
                }
            }
        }
    });
};

filterList(process.argv[2], process.argv[3]);

但它会返回此错误:

if (path.extname(files[i]) === '.' + ext) {
                         ^
TypeError: path.extname is not a function

知道为什么吗?

1 个答案:

答案 0 :(得分:0)

将arg的名称从path更改为_path,其冲突

var fs = require('fs'),
path = require('path');

var filterList = function (_path, ext) {
  return fs.readdir(_path, function (err, files) {
   if (err) {
        console.log(err);
    } else {
        for (var i = 0; i < files.length; i++) {
            if (path.extname(files[i]) === '.' + ext) {
                return console.log(files[i]);
            }
        }
    }
 });
};

filterList(process.argv[2], process.argv[3]);