nextTick、setTimeout(fn, 0)の代わり
setTimeout(fn, 0)より高速な関数は最近はこんな感じのを使うといいと思う。
var nextTick; if (typeof setImmediate === 'function') { nextTick = setImmediate; } else if (typeof process === 'object' && typeof process.nextTick === 'function') { nextTick = process.nextTick; } else if (typeof MessageChannel === 'function') { (function () { var channel = new MessageChannel(); var queue = null; channel.port1.onmessage = function () { try { queue.fn(); } finally { queue = queue.next; } }; nextTick = function (fn) { queue = { fn: fn, next: queue }; channel.port2.postMessage(); }; })(); } else { nextTick = function (fn) { setTimeout(fn, 0); }; }
処理を非同期化したい時に使うと良い。ブラウザでのアニメーション時はrequestAnimationFrame/setTimeoutを使うべきである。