我有一個非常簡單的實用程序腳本,我用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調用?我意識到異步調用會放棄對其他用戶的主線程的控制權,但我不太清楚如何(在讀取本地文件時)他們將阻止線程同時投入單個客戶端。 –