blob: 8dd8ecaf8fd76515fbf2b8a41223aaa89f5a7c81 (
plain)
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
30
31
32
33
34
35
36
37
38
39
40
|
'use strict';
import once from 'lodash/function/once';
import noop from 'lodash/utility/noop';
import keyIterator from './internal/keyIterator';
import onlyOnce from './internal/onlyOnce';
import setImmediate from './setImmediate';
export default function eachOfSeries(obj, iterator, callback) {
callback = once(callback || noop);
obj = obj || [];
var nextKey = keyIterator(obj);
var key = nextKey();
function iterate() {
var sync = true;
if (key === null) {
return callback(null);
}
iterator(obj[key], key, onlyOnce(function(err) {
if (err) {
callback(err);
} else {
key = nextKey();
if (key === null) {
return callback(null);
} else {
if (sync) {
setImmediate(iterate);
} else {
iterate();
}
}
}
}));
sync = false;
}
iterate();
}
|