2016-11-16 62 views
0

我正在嘗試編寫一個函數,它需要一個路徑並返回該目錄內的所有文件。fs.readdir在函數內部調用時返回undefined

當我這樣做:

function getDirectories(path) { 
    fs.readdir(path, function(err, content) { 
    if (err) { 
     return err; 
    } else { 
     return content; 
    } 
    }); 
} 

console.log(getDirectories('./XML/')); 

我在控制檯中看到undefined

但是當我這樣做:

function getDirectories(path) { 
    fs.readdir(path, function(err, content) { 
    if (err) { 
     return err; 
    } else { 
     console.log(content); 
    } 
    }); 
} 

我與文件名作爲字符串數組預期。

我在做什麼錯?

+0

其因爲READDIR是異步 - 使用'fs.readdirSync' – naortor

回答

2

fs.readdir是異步使用:

function getDirectories(path, callback) { 
    fs.readdir(path, function (err, content) { 
     if (err) return callback(err) 
     callback(null, content) 
    }) 
} 

getDirectories('./XML', function (err, content) { 
    console.log(content) 
}) 
+0

這也將返回undefined嘗試 –

+0

剛纔編輯 –