-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathex4.js
More file actions
40 lines (31 loc) · 939 Bytes
/
ex4.js
File metadata and controls
40 lines (31 loc) · 939 Bytes
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';
/*
Problem:
Implement createProcessor() that uses a closure but does not retain processed
items after disposal.
API:
- process(item): returns { count, last } and tracks items while active
- dispose(): clears retained items and returns { cleared, retained, active }
Rules:
- After dispose(), process must throw Error('Disposed').
- dispose() must drop references so items can be released.
- Multiple dispose() calls should be safe.
Starter code retains items after disposal.
*/
function createProcessor() {
const items = [];
let disposed = false;
function process(item) {
if (disposed) {
return { count: items.length, last: item };
}
items.push(item);
return { count: items.length, last: item };
}
function dispose() {
disposed = true;
return { cleared: 0, retained: items.length, active: !disposed };
}
return { process, dispose };
}
module.exports = { createProcessor };