console.log('#1') setTimeout(() => { console.log('#2') }, 500) console.log('#3') プログラムは上から順に実行されます。 同期処理では、一つ前の実行が終わるまで次の実行は待ちます。 非同期処理では、一つ前の実行に時間がかかる場合、実行完了をまたずに次の処理が行われます。 ざっくり言うと、前の反応を待つのが同期、前の反応を待たないのが非同期です。 JavaScriptは非同期で処理が実行されるため、上記のサンプルコードでは「#1 #2 #3」という順番ではなく「#1 #3 #2」という結果になったのです。 Promiseとは何か? 上記のサンプルコードを上から順番に実行するためにはどうすればいいのでしょうか? この問題に対する解がPromiseです Promiseを使うことで非同期言語のJavaScriptを同期的