在Node.js和Express中,可以使用回调函数或Promise来避免连续处理多个文件的问题。下面是两种方法的代码示例:
const fs = require('fs');
const express = require('express');
const app = express();
app.get('/files', (req, res) => {
// 文件路径列表
const filePaths = ['file1.txt', 'file2.txt', 'file3.txt'];
// 递归函数处理文件
const processFile = (index) => {
if (index >= filePaths.length) {
// 处理完所有文件后发送响应
res.send('All files processed');
return;
}
// 处理当前文件
const filePath = filePaths[index];
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
res.status(500).send(err.message);
return;
}
// 处理文件内容
console.log(data);
// 处理下一个文件
processFile(index + 1);
});
};
// 开始处理第一个文件
processFile(0);
});
app.listen(3000, () => {
console.log('Server started on port 3000');
});
const fs = require('fs').promises;
const express = require('express');
const app = express();
app.get('/files', async (req, res) => {
// 文件路径列表
const filePaths = ['file1.txt', 'file2.txt', 'file3.txt'];
try {
// 依次处理文件
for (const filePath of filePaths) {
const data = await fs.readFile(filePath, 'utf8');
// 处理文件内容
console.log(data);
}
// 处理完所有文件后发送响应
res.send('All files processed');
} catch (err) {
res.status(500).send(err.message);
}
});
app.listen(3000, () => {
console.log('Server started on port 3000');
});
这两种方法都可以避免连续处理多个文件的问题,并且可以根据实际需要选择使用回调函数或Promise来处理文件读取操作。