[JavaScript] setTimeout(function(){}, 1) で 1 ミリ秒を指定しても同時刻になることがある
JavaScript の setTimeout(function(){}, 1) で 1 ミリ秒を指定してるのに、Date.now() の結果がたまに同時刻になることがあって困った話をご紹介します。
Node.js (v6.11.5 LTS) REPL で、以下の3つの処理を同時に実行させて Date.now() の結果が全く同じになるのか確認しました。
console.log(Date.now())
setTimeout(function(){
console.log(Date.now());
}, 1)
''
” については、setTimeout のオブジェクトが repl の標準出力に表示されないように実行しています。
> console.log(Date.now()), setTimeout(function(){ console.log(Date.now()); }, 1), ''
1509078324903
''
> 1509078324903
> console.log(Date.now()), setTimeout(function(){ console.log(Date.now()); }, 1), ''
1509078326782
''
> 1509078326784
以上、setTimeout(function(){}, 1) で同時刻にハマった JavaScript の現場からお送りしました。