-
-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathiter.js
30 lines (23 loc) · 762 Bytes
/
iter.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var sys = require('sys');
exports.reduce = function reduce(array, iter_callback, initial, result_callback) {
var index = 0;
var depth = 0;
if (!result_callback) { throw 'no result callback!!!'; }
(function inner (error, value) {
if (error) {
return result_callback(error);
}
if (index < array.length) {
process.nextTick( function () {
try {
index = index + 1;
iter_callback( value, array[index - 1], index, array, inner );
} catch (e) {
result_callback(e);
}
});
} else {
result_callback( false, value );
}
})( false, initial );
}