【发布时间】:2021-08-14 22:41:34
【问题描述】:
if (fs.existsSync('tmp/cache.txt')) {
fs.readFile("tmp/cache.txt", function (err, data) {
if (data != "" || data != "[]") {
jdata = JSON.parse(data);
if (
jdata[jdata.length - 1].substring(4, 8) ==
new Date().getFullYear() + 543
) {
year = new Date().getFullYear() + 542;
console.log("yes this year");
}
jdata.forEach(function (value, i) {
if (
value.substring(4, 8) ==
new Date().getFullYear() + 543
) {
countloveme--;
}
});
jdata.splice(countloveme);
}
});
}
我的代码正在运行,但是
代码在 ifelse 中的 fs.readFile 完成之前完成
我不知道如何在 fs.readFile 中添加 await 或无论如何此代码正在工作
【问题讨论】:
-
您似乎知道
exists的同步版本,但不知道readFile,并指出掌握一般异步编程仍然是个好主意。 -
fs.readFile()是非阻塞和异步的,因此您的代码不会等待它完成。如果您的应用程序中的同步代码正常(例如,它不是服务器),那么您可以使用fs.readFileSync()。否则,您需要学习如何在 nodejs 中编写正确的异步代码,并且我们需要先查看周围的代码上下文,然后才能提出正确的编写方法,因为调用代码也必须更改。