Node.js はシングルスレッドのイベント駆動型アーキテクチャで動作します。つまり、メインスレッドをブロックすることなく、多くの操作を同時に処理できます。これは、他のコードの実行をブロックしないように、I/O 操作 (ファイルの読み取り、データベースのクエリなど) などのタスクを非同期で実行する必要があるスケーラブルなアプリケーションを作成する場合に非常に重要です。
同期コードは一度に 1 ステップずつ実行されます。つまり、次のステップに進む前に各ステップが完了する必要があります。これにより、操作が遅い場合 (大きなファイルの読み取りやデータベースのクエリなど) にメインスレッドがブロックされる可能性があります。
例 (同期コード):
const fs = require('fs'); const data = fs.readFileSync('file.txt', 'utf8'); console.log(data);
一方、非同期コードはメインスレッドをブロックしません。操作が完了するのを待つ代わりに、プログラムは実行を継続し、準備ができたときに非同期操作の結果を処理します。
例 (非同期コード):
const fs = require('fs'); // Call Back fs.readFile('file.txt', 'utf8', (err, data) => { if (err) throw err; console.log(data); }); console.log('This will log before the file content!');
非同期/待機
ES2017 (Node.js 7.6+) で導入された async/await は、Promise の上に構築された糖衣構文です。これにより、非同期コードを同期のような方法で記述できるようになり、コードがより読みやすくなり、保守が容易になります。
例 (非同期/待機):
const fs = require('fs').promises; async function readFile() { try { const data = await fs.readFile('file.txt', 'utf8'); console.log(data); } catch (err) { console.error(err); } } readFile();
非同期コードと同期コードの選択は、ユースケースによって異なります。 I/O の多い操作の場合は、メインスレッドをブロックせず、アプリケーションの応答性を維持するために、常に非同期パターンを優先してください。
読んでいただきありがとうございます。コーディングを楽しんでください! ?
以上がNode.js の非同期パターン - Node.js チュートリアル - パート 6の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。