diff options
Diffstat (limited to 'lib/internal/setImmediate.js')
-rw-r--r-- | lib/internal/setImmediate.js | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/lib/internal/setImmediate.js b/lib/internal/setImmediate.js index 7d15249..eb4ea63 100644 --- a/lib/internal/setImmediate.js +++ b/lib/internal/setImmediate.js @@ -1,21 +1,30 @@ 'use strict'; + import rest from 'lodash/rest'; -var _setImmediate = typeof setImmediate === 'function' && setImmediate; +export var hasSetImmediate = typeof setImmediate === 'function' && setImmediate; +export var hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function'; + +export function fallback(fn) { + setTimeout(fn, 0); +} + +export function wrap(defer) { + return rest(function (fn, args) { + defer(function () { + fn.apply(null, args); + }); + }); +} var _defer; -if (_setImmediate) { - _defer = _setImmediate; -} else if (typeof process === 'object' && typeof process.nextTick === 'function') { + +if (hasSetImmediate) { + _defer = setImmediate; +} else if (hasNextTick) { _defer = process.nextTick; } else { - _defer = function(fn) { - setTimeout(fn, 0); - }; + _defer = fallback; } -export default rest(function (fn, args) { - _defer(function () { - fn.apply(null, args); - }); -}); +export default wrap(_defer); |