LoginSignup
0
0

More than 1 year has passed since last update.

JSでawait出来るsetTimeoutがたった1行で作れるって話

Posted at

コード 📃

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();
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0