01 / 05
時間のかかる処理を待つ
INPUT · スライド
順番通りに待つ(async / await)
02 / 05
非同期関数 async
関数の前に async と書くと、その関数は非同期関数になる。
async を付けた関数の中でのみ、次の await が使えるようになるよ。また、async 関数の戻り値は自動的に Promise で包まれる。
const hello = async () => { return "こんにちは";};hello().then((msg) => console.log(msg));実行結果
こんにちは
03 / 05
終わるのを待つ await
Promise の前に await を置くと、その Promise が完了するまでその行で待機し、完了したら結果を直接取り出してくれる!
.then を書かなくても、ふつうの変数に結果が入ってくるのが最大の革命だよ。
const run = async () => { const p = Promise.resolve("荷物"); const item = await p; console.log(item);};run();実行結果
荷物
04 / 05
順番通りに次々と進む
await を並べて書けば、1つめが終わってから2つめ、2つめが終わってから3つめ、と順番通りに処理が進む。
複雑なコールバックを使わずに、人間の思考順でコードが書けるようになるんだ。
const run = async () => { const a = await Promise.resolve(10); const b = await Promise.resolve(20); console.log(a + b);};run();実行結果
30
05 / 05
まとめて確かめよう
ここまでを整理しておこう。
- 関数の前に
asyncを付ける - Promise の前に
awaitを置いて結果を待つ .thenを書かずに変数に直接結果が入る- 上から下へまっすぐ処理が書ける
それじゃあ、await で待ってみよう。