Menu
CoddyTech

コールバック

CoddyのNode.jsジャーニー「Node.jsの基礎」セクションの一部。レッスン 14/24。

大きなファイルを読み込むには時間がかかり、その間、読み込みを待っているプログラムはほかのことを何もしません。

fs.readFile(path, 'utf8', callback)は読み込みを開始し、すぐに戻ります。ファイルの読み込みが完了すると、Nodeは(err, text)を渡してコールバックを呼び出します。成功時、errはnullで、それ以外の場合はエラーになるため、まず確認してください。テキストを必要とする処理はすべてコールバックの中に書きます。

import fs from 'node:fs';

fs.readFile('poem.txt', 'utf8', (err, text) => {
    if (err) {
        console.log('No poem today');
        return;
    }
    console.log(text.split('\n').length + ' lines');
});
console.log('Asked for the poem');

Asked for the poemが最初に出力されます。readFileの次の行は、ファイルの読み込み中に実行されるためです。

challenge icon

チャレンジ

簡単
  • count.js は Reading... を出力し、その後コールバック内から <n> notes を出力し、さらにコールバック内から Done を出力します。
  • ファイルを読み取れない場合、件数の代わりに Cannot read <file> を出力します。

node count.js を実行し、続けて node count.js nothere.json を実行してください。

自分で試してみよう

import fs from 'node:fs';

const file = process.argv[2] ?? 'notes.json';

console.log('Reading...');
// fs.readFileとコールバックを使ってファイルを読み込む。
// ノートの件数を表示し、次にDoneを表示する。
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Node.jsの基礎のすべてのレッスン