Skip to content

Commit 26e4568

Browse files
Simplified memoize3 and improve type checking (#2964)
1 parent aa80e1b commit 26e4568

File tree

1 file changed

+14
-15
lines changed

1 file changed

+14
-15
lines changed

src/jsutils/memoize3.js

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,29 +10,28 @@ export function memoize3<
1010
let cache0;
1111

1212
return function memoized(a1, a2, a3) {
13-
if (!cache0) {
13+
if (cache0 === undefined) {
1414
cache0 = new WeakMap();
1515
}
16+
1617
let cache1 = cache0.get(a1);
17-
let cache2;
18-
if (cache1) {
19-
cache2 = cache1.get(a2);
20-
if (cache2) {
21-
const cachedValue = cache2.get(a3);
22-
if (cachedValue !== undefined) {
23-
return cachedValue;
24-
}
25-
}
26-
} else {
18+
if (cache1 === undefined) {
2719
cache1 = new WeakMap();
2820
cache0.set(a1, cache1);
2921
}
30-
if (!cache2) {
22+
23+
let cache2 = cache1.get(a2);
24+
if (cache2 === undefined) {
3125
cache2 = new WeakMap();
3226
cache1.set(a2, cache2);
3327
}
34-
const newValue = fn(a1, a2, a3);
35-
cache2.set(a3, newValue);
36-
return newValue;
28+
29+
let fnResult = cache2.get(a3);
30+
if (fnResult === undefined) {
31+
fnResult = fn(a1, a2, a3);
32+
cache2.set(a3, fnResult);
33+
}
34+
35+
return fnResult;
3736
};
3837
}

0 commit comments

Comments
 (0)