正在创建自己的记录器功能



我正在学习Node.js及其文件系统,我有一项任务要创建自己的自定义记录器函数。

myLogger('aaa')
myLogger('bbb')
myLogger('ccc')
myLogger('ddd')
myLogger('eee')
myLogger('fff')
myLogger('ggg')
myLogger('hhh')
myLogger('iii')
myLogger('jjj')
myLogger('kkk')
myLogger('lll')

应该创建一个包含文件中记录的所有参数的文件。该文件应始终包含最多10行(10条记录的消息(。但我主要遇到的问题是,我的函数总是只记录最后一次记录器调用——在这种情况下;lll";。我把打开txt文件的时间和关闭文件的时间打印到控制台上。对于所有呼叫,都是相同的开放时间和关闭时间。所以这就是为什么输出总是最后一个调用。

但我不知道该怎么解决。

function myLogger(stringToLog) {
var today = new Date();
var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
console.log(stringToLog, "start", time)
return fs.readFile(myLogPath, {})
.then(data => {
let dataInArray = String(data).split("n");
if(dataInArray.length > 9) {
dataInArray.splice(0, dataInArray.length - 9);
}
dataInArray.push(stringToLog);
fs.writeFile(myLogPath, dataInArray.join("n"))
var today = new Date();
var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
console.log(stringToLog, "end", time)
});
}

看起来您在myLogger()函数中返回了Promise。

在这种情况下,您应该在代码中使用async/await

async function myLogger() { ... }
await myLogger('aaa');
await myLogger('bbb');

最新更新