代碼:
function getLocalFiles() {
let files = [];
return new Promise((resolve, reject) => {
fs.readdir('storage', (err, filenames) => {
if (err)
throw err;
filenames.forEach((filename) => {
fs.readFile('storage/' filename, 'utf-8', (err, data) => {
if (err)
throw err;
const file = {
filename: filename,
content: data
};
files.push(file);
//console.log(files); I checked that array has a files but then it returns empty
});
});
});
resolve(files);
})
}
api.get('/', async (req, res) => {
const files = await getLocalFiles();
res.send('local files:\n' files);
})
我在“storage”目錄中有一些檔案,我宣告了一個 getLocalFiles() 函式,該函式讀取該目錄中每個檔案的名稱和內容并將其推送到“files”陣列。但我得到的不是這個,而是空陣列。為什么檔案沒有寫入陣列?
uj5u.com熱心網友回復:
幾點建議:
fs/promises您正在撰寫的代碼將從使用 fs ( )的 Promise 版本中受益匪淺。- 避免混合使用 Promise 和回呼,只使用 Promise(盡可能通過 async/await)。
- 我沒有在這里更改它,但是如果您要在 Windows 上運行它,
/分隔符不會剪切它,所以請path.join('storage', filename)改用
const fs = require('fs/promises');
async function getLocalFiles() {
let files = [];
const dir = await fs.readdir('storage')
for (const filename of dir) {
files.push({
filename,
content: await fs.readFile('storage/' filename, 'utf-8')
})
}
return files;
}
api.get('/', async (req, res) => {
const files = await getLocalFiles();
res.send('local files:\n' files);
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/456688.html
標籤:javascript 节点.js 表示 异步
