ブログ

javascriptで同期しながらsleepさせる方法

javascriptはsleep機能がないため、実装するためにはちょっとしたテクニックが必要です。たとえば、1秒後に処理を実行させたい場合は

setTimeout(() => {
   //ここに実行させたい処理を書く
  console.log(‘1秒後に実行されます。’);
}, 1000);

でも、これじゃ非同期なので都合が悪い時もあります。
仕方ないのでDate().getTime()で時間を取得して1秒経ったら処理を実行するようにループ処理を入れる。
でも、今度は同期にはなるが1秒間は画面操作が全くできない(1秒間ずっとループ処理が走るのでほかの処理を受け付けてくれない)
もしこれが5秒、10秒だったら? しかもフロント側のCPU消費が激しくなる。intervalとの組み合わせもありますが面倒です。
そこで簡単に同期を保ちながらsleep処理を行うにはPromiseを使います。

return new Promise((resolve) => {
  setTimeout(() => {
    console.log(‘sync1 awake in 1000ms sleep’);
    resolve(‘resolveに戻り値をセットしないと呼び出し元はずっと待機状態になるよ。’);
  }, 1000)
}).then(() => {
  console.log(‘sync2′);
});

こんな感じで実装できます。ほかにawaitを使う方法もあるので好きなほうで。ここはポイントだけ押さえているのでシンプルですが、初心者にはちょっと優しくないかもしれないですね。

関連記事

  1. 三峯神社 4rd
  2. S.O.Sボタン
  3. ジブリ作品マーニー
  4. 2017年も残りあと僅かの今の感想
  5. 長野戸隠への旅2
  6. 2016年韓国旅行(慶州仏国寺その3)
  7. 秩父の三峰神社
  8. 高齢出産について

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

PAGE TOP