コード 📃
await new Promise((resolve) => setTimeout(resolve, 3000));
以上!
めちゃくちゃ簡単🙌
awaitを使っているので、これを使う関数にはasyncを付ける必要があるので要注意!
簡単な解説 📗
前提知識として、Promise() をなんとなく理解している必要があります。
1行だと少し理解するのが難しいので分解してみます。
await new Promise((resolve) => {
setTimeout(() => {
resolve();
}, 3000)
});
処理の流れ
1.Promise内でsetTimeoutを実行する
2.setTimeoutが指定時間(3000ms)だけ待つ
3.時間が経ったらresolve()を実行して終了!
await new Promise()
の組み合わせのおかげでresolve()
が実行されるまでは処理が止まるって感じですね🙌
逆にresolve()
が実行されないとエンドレスPromiseになりますw
おまけ 🌸
本家(?)のjava様にならってjavascriptでもsleep関数を作ってみました!!
/**
* 処理を指定時間だけ止める
* @param { number } time 止める時間(ms)
*/
async function sleep(time) {
await new Promise((resolve) => setTimeout(resolve, time));
}
// 以下は実行用の記述
async function hoge() {
// 1秒待ってから終了ログを出す
console.log('はじめ!');
await sleep(1000);
console.log('おわり!');
}
hoge();