Menu
CoddyTech

値を待つ

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

await式を使うと、thenコールバックの中ではなく、読み込み後の次のステップを記述できます。このプロミスの完了を待ち、その結果を返します。読み込みを待っている間も、ほかの処理を実行できます。

const text = await readFile('name.txt', 'utf8');
console.log(text.toUpperCase());

awaitを使わないと、textにはプロミスが入ります。プロミスには文字列のメソッドがありません。これらのファイルはモジュールなので、関数の外でもawaitを使えます。関数の中では、その関数にasyncを付けます。async関数も、呼び出し元にプロミスを返します。

challenge icon

チャレンジ

簡単

まずpractice.jsを実行します。エラーにはtext.toUpperCase is not a functionと表示されます。textにはファイルのテキストではなく、Promiseが入っています。

プログラムが使う前に、読み込みが完了した結果がtextに入るようにします。非同期のファイル関数はそのままにします。もう一度実行すると、出力はBUY MILKになります。

引数other.txtを指定して実行します。渡された2つ目のファイルはCALL ADAと出力されなければなりません。指定されたファイル名の式はそのままにします。

自分で試してみよう

import { readFile } from 'node:fs/promises';
const text = readFile(process.argv[2] ?? 'note.txt', 'utf8');
console.log(text.toUpperCase());

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

自分で練習してみよう: Expressプレイグラウンド