我剛開始使用Step,並試圖獲取目錄中所有文件的stat
信息。使用Node.js中的參數調用下一步步驟模塊
但是,由於我在第二步中打電話給fs.stat
,我仍然需要完整路徑。我如何將它傳遞給下一個方法?我試過this(directory)
,但沒有按預期工作。
var getFiles = step.fn(
function readDir(directory) {
var p = path.join(__dirname, directory);
fs.readdir(p, this); // *** How do I pass 'directory' to the next method?
},
function readFiles(err, results, directory) {
if (err) throw err;
// Create a new group
var group = this.group();
results.forEach(function (filename) {
console.log(filename);
var p = path.join(__dirname, directory, filename);
// fs.stat requires a full path
fs.stat(p, group()); // Could be this.parallel() ??
});
}
);
// later...
var files = getFiles('data');
據我瞭解,readDir
被調用一次,然後readFiles
被調用,但在所有系列作爲fs.readdir
的回調只是被調用一次,文件的數組。
我結束了交換到異步。這是炸彈。 –
我完全不同意。外部範圍變量不是一件壞事,但需要正確完成。範圍查找非常昂貴;但通過創建一個局部變量的範圍變量,真的沒有問題。關於切換到異步:根據我的經驗,使用Step可以比異步更優雅地表達某些內容。儘管如此,還不夠完美,而一個將他們的想法和功能相結合的圖書館將會很好。最重要的事實是,儘管單線程環境可以使許多事情變得更容易,但我仍然不會總稱它很容易。 –