[Node.js] 指定した時間sleepする - Promise版

小ネタです。 多くのスクリプト言語やシェルなどで実装されているsleep機能がNode.jsには存在しないため、使いたくなったら自分で用意する必要があります。いくつか方法がありますがお手軽なのはPromiseとsetTimeoutを利用した物です。

あっちこっちで使う場合は以下のように適当なモジュールを用意します。

/**
 * sleep.js
 */
const sleep = (time) => {
  return new Promise((resolve, reject) => {
      setTimeout(() => {
          resolve()
      }, time)
  })
}

module.exports = sleep

先ほどのモジュールをrequireで読み込み実行するだけ。

const sleep = require('./sleep')

console.log('Start')
sleep(3000)
  .then( () => console.log('End') )

もちろんasync/awaitを利用して書くこともできます。

const sleep = require('./sleep')

!(async ()=>{
  console.log('Start')
  await sleep(3000)  // 3秒待機
  console.log('End')
})()