• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2
3if (!process.version ||
4    process.version.indexOf('v0.') === 0 ||
5    process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
6  module.exports = { nextTick: nextTick };
7} else {
8  module.exports = process
9}
10
11function nextTick(fn, arg1, arg2, arg3) {
12  if (typeof fn !== 'function') {
13    throw new TypeError('"callback" argument must be a function');
14  }
15  var len = arguments.length;
16  var args, i;
17  switch (len) {
18  case 0:
19  case 1:
20    return process.nextTick(fn);
21  case 2:
22    return process.nextTick(function afterTickOne() {
23      fn.call(null, arg1);
24    });
25  case 3:
26    return process.nextTick(function afterTickTwo() {
27      fn.call(null, arg1, arg2);
28    });
29  case 4:
30    return process.nextTick(function afterTickThree() {
31      fn.call(null, arg1, arg2, arg3);
32    });
33  default:
34    args = new Array(len - 1);
35    i = 0;
36    while (i < args.length) {
37      args[i++] = arguments[i];
38    }
39    return process.nextTick(function afterTick() {
40      fn.apply(null, args);
41    });
42  }
43}
44
45