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実装されないかなーって淡い期待を。。
ちなみに、主にデバックや開発用にしか使用してないので、パフォーマンス的な問題とかは一切考慮してないので悪しからず・・・・。
だれかの参考になれば幸いです。