読者です 読者をやめる 読者になる 読者になる

Hirooooo’s Labo

開発メモ、ガジェット、日記、趣味など、思った事を思ったまんま書くブログ

【メモ】Javascriptでスリープ(Sleep)的な処理を簡単に実装する方法

f:id:hirooooo-lab:20161101124844j:plain

Javascriptで開発していると、処理の途中でスリープして待機をさせたい時があると思います。

他の言語(RubyとかPHPとか)だと、Sleep関数なるものがよく用意されていて

sleep(秒数)

みたいな書き方で、指定した秒数だけ遅延させることが出来るんですけど、Javascriptにはそんな便利な関数がありません。たぶん…

なので、Javascriptでも簡単に擬似スリープを行い、処理を待機させる書き方をメモしておきます。

JavascriptでSleep的待機処理実装

const d1 = new Date();
while (true) {
  const d2 = new Date();
  if (d2 - d1 > 5000) {
    break;
  }
}

簡単に解説

見てもらえばすぐわかると思うんですけど、簡単に解説おば。

  • 1行目でd1に処理開始時ののDateを取得します。
  • 2行目からWhile文で無限ループに入ります。
  • 3行目のループ内で、d2に最新のDateを取得します。
  • 4行目で、d1とd2の差分を比較し、指定した秒数以上だった場合にループをbreakで抜けます。

ちょー簡単ですね。

上記の例では5秒(5000ミリ秒) の待機が行われるはずです。

他にもJavascriptでは、setTimeoutを使用したやり方とかも調べると出てくるんですけど、ちょっと自分には可読性が悪かったので、いつもこのやり方をやってます。

個人的には結構Sleep処理をJavascriptで行うことってあると思うんですよね。
特に開発途中のAPI実装時とかは非同期処理の確認でよくSleepさせて処理を待機させたりします。
なのでsleep関数つくってくれてもいいのになー。って毎回思います。 ES2015とかES2016とかでJavascriptにもSleep実装されないかなーって淡い期待を。。

ちなみに、主にデバックや開発用にしか使用してないので、パフォーマンス的な問題とかは一切考慮してないので悪しからず・・・・。

だれかの参考になれば幸いです。