値を待つ
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関数も、呼び出し元にプロミスを返します。
チャレンジ
簡単まず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プレイグラウンド