我有一个非常简单的实用程序脚本,我用JavaScript编写了node.js,它读取文件,进行一些计算,然后写入输出文件。在目前形式的源看起来是这样的:我应该在node.js中的本地文件的同步等效项上使用异步文件IO方法吗?
fs.readFile(inputPath, function (err, data) {
if (err) throw err;
// do something with the data
fs.writeFile(outputPath, output, function (err) {
if (err) throw err;
console.log("File successfully written.");
});
});
这工作得很好,但我不知道是否有在这种情况下,任何不利使用各种同步这些功能,而不是像这样:
var data = fs.readFileSync(inputPath);
// do something with the data
fs.writeFileSync(outputPath, output);
console.log("File successfully written.");
对我来说,阅读和理解比回调变得简单得多。在这种情况下是否有任何理由使用前一种方法?
我意识到速度并不是一个问题,我用本地运行的这个简单的脚本,但我有兴趣了解它背后的理论。什么时候使用异步方法有帮助,什么时候没有?即使在生产应用程序中,如果我只是在读文件,然后等待执行下一个任务,是否有任何理由使用异步方法?
这对我有意义,但你能详细说明网络服务点吗? Node.js是单线程的,对吗?如果是这样,那么如何使用与“异步”不同的同步IO调用?我意识到异步调用会放弃对其他用户的主线程的控制权,但我不太清楚如何(在读取本地文件时)他们将阻止线程同时投入单个客户端。 –