NodeでNon blockingなSleepをさせる方法

Node上でPHPのように一定時間停止、つまりsleepさせるには以下が一番有名

https://www.npmjs.org/package/sleep

npm install sleep

以下のように使う

var sleep = require('sleep');
//3秒間スリープ
sleep.sleep(n);
//0.3秒間スリープ
sleep.usleep(300000);

が、これにはスリープ中は他の動作もすべて停止してしまうという弱点がある。

サーバーが一定秒数止まる ことになる。つまり、そのリクエストに3人来たら、3人目は1人目の3倍待たないといけない。 Node.jsの人はちゃんとsleepしてください - Qiitaから引用

これではnodeのメリットが失われてしまう。と思ってたら先人さんがすでにパッケージだしてた。

https://www.npmjs.org/package/sleep-async

インストールは以下

npm install sleep-async

以下のように使う。「before」がはじめに表示されて3秒後に「after」が表示される

var sleep = require('sleep-async')();
console.log("before");
sleep.sleep(3000, function(){
    console.log("after");
});