今日は、ChatGPT の助けを借りて Node.js の学習を続け、非同期プログラミングに焦点を当てました。これは Node.js の最も重要な概念の 1 つであり、それをマスターし始めることに興奮しています。
理論
Node.js では、ノンブロッキングのイベント駆動型アーキテクチャにより、非同期プログラミングが重要です。これは、ファイル読み取り、データベース クエリ、ネットワーク リクエストなどの操作が、結果の待機中に他のコードの実行をブロックしないことを意味します。
非同期操作を処理する 3 つの主な方法を検討しました。
コールバック: 他の関数に引数として渡される関数。非同期操作が完了すると実行されます。
const fs = require('fs'); fs.readFile('example.txt', 'utf8', (err, data) => { if (err) { console.error(err); return; } console.log(data); });
Promises: 非同期操作の最終的な完了 (または失敗) とその結果の値を表すオブジェクト。 Promise を使用するとチェーンが可能になり、ネストされたコールバックと比較してコードが読みやすくなります。
const fs = require('fs').promises; fs.readFile('example.txt', 'utf8') .then(data => { console.log(data); }) .catch(err => { console.error(err); });
Async/Await: Promise の上に構築された糖衣構文で、同期的な方法で非同期コードを作成できます。
const fs = require('fs').promises; async function readFile() { try { const data = await fs.readFile('example.txt', 'utf8'); console.log(data); } catch (err) { console.error(err); } } readFile();
実践的なタスク
今日はコールバックベースの関数をプロミスベースの関数に変換する練習をしました。
コールバックを含む元のコード:
const fs = require('fs'); function readFileCallback(path, callback) { fs.readFile(path, 'utf8', (err, data) => { if (err) { callback(err); return; } callback(null, data); }); } readFileCallback('example.txt', (err, data) => { if (err) { console.error(err); return; } console.log(data); });
Promise への変換:
const fs = require('fs').promises; function readFilePromise(path) { return fs.readFile(path, 'utf8'); } readFilePromise('example.txt') .then(data => { console.log(data); }) .catch(err => { console.error(err); });
独立したタスク
また、async/await を使用して、ファイルの内容を読み取り、コンソールに記録する非同期関数も作成しました。エラーが発生した場合 (ファイルが見つからないなど)、エラーを捕捉してログに記録する必要があります。
const fs = require('fs').promises; async function readFileAsync(path) { try { const data = await fs.readFile(path, 'utf8'); console.log(data); } catch (err) { console.error(err); } } readFileAsync('example.txt');
リソース
ChatGPT によって作成されたすべてのレッスンは、https://king-tri-ton.github.io/learn-nodejs
以上がAI を使って数日で Node.js を学ぶ - 4 日目の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。