2015-11-04 97 views
0

我想打一個功能列出一些目錄中的文件,過濾它推而廣之:的NodeJS如何創建asynchronus函數,然後調用它

這裏是我的代碼如下所示:

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 

任何想法爲什麼? arg的

+0

extname是不是一個函數,它的屬性,嘗試文件[I] .extname – javaguest

+0

path.extname是@javaguest看到一個功能:HTTPS ://nodejs.org/api/path.html#path_path_extname_p – baao

+0

是它的一個函數,如果我運行的代碼沒有在'filterList'函數中定義它,它將工作 – kmp4hj

回答

0

更改名稱從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]); 
+0

謝謝你,我沒有發現:D – kmp4hj

相關問題