我想了解異步編程Node.js,但停滯在這段代碼。在JavaScript中使每個異步
此功能在其回調返回文件的數組中的目錄:
function openDir(path, callback) {
path = __dirname + path;
fs.exists(path, function (exists) {
if (exists) {
fs.readdir(path, function (err, files) {
if (err) {
throw err;
}
var result = [];
files.forEach(function (filename, index) {
result[index] = filename;
});
return callback(result);
});
}
});
}
但是當我使用內部.forEach
異步代碼,它沒有返回值:
function openDir(path, callback) {
path = __dirname + path;
fs.exists(path, function (exists) {
if (exists) {
fs.readdir(path, function (err, files) {
if (err) {
throw err;
}
var result = [];
files.forEach(function (filename, index) {
fs.stat(path + filename, function (err, stats) {
if (err) {
throw err;
}
result[index] = filename;
});
});
return callback(result);
});
}
});
}
我明白爲什麼會發生,但不明白如何編寫正確的代碼。
您不能從異步函數返回,您必須設置回調 –
此模塊將使您的生活更輕鬆:https://github.com/caolan/async – joao
回調或承諾/延期模式是您的方式到這裏。 – dfsq