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