检查文件是否同步存在是什么意思?

What does it mean to check if a file exists synchronously?

我正在尝试理解 Node.js 中的 fs.statSync 命令。我在这个问题 Check synchronously if file/directory exists in Node.js 读到它会检查文件是否同步存在。我不明白这是什么意思,检查它是否同步存在和检查它是否异步存在有什么区别。

这意味着当前'thread'的执行将在操作期间冻结。

Synchronously 意味着您的代码会一直等待直到获得结果。在您从 fs.statSync() 获得结果之前,您的线程中不会发生任何其他事情。 None 您的其他代码运行。你基本上已经锁定了程序。

Asynchronously 意味着函数 returns 马上执行,你的代码可以继续 运行,但你不知道结果是什么。相反,结果会在稍后触发的回调函数中提供给您。

同步意味着您的线程将在等待文件系统确定文件是否存在时阻塞。

如果您异步执行此操作,您仍会询问文件系统,但文件系统将能够在后台执行此操作,从而允许您的线程继续 运行。一旦文件系统知道文件是否存在,它可能会在您的代码中调用回调函数来通知您,或者以其他方式通知您而不会阻塞您的执行线程。

同步和异步之间的主要区别是异步不等待。您必须学习如何以全新的方式编写代码,以确保事情按正确的顺序发生。

值得学习如何做到这一点,但一开始可能会有点费脑筋。

fs.readFileSync(file); // Stops and waits for completion.
console.log("This will always print after fs.readFileSync.");

fs.readFile(file, function callback(err, data) { // Doesn't stop but will run the callback when it HAS read the file.
  if (err) throw err; // File doesn't exist.
  console.log(data);
});
console.log("This will print before fs.readFile finishes, probably, it might not, but it might, you never quite know.");