12345678910111213141516171819202122232425262728293031323334 |
- /**
- * Memoizes the provided three-argument function.
- */
- export function memoize3(fn) {
- let cache0;
- return function memoized(a1, a2, a3) {
- if (cache0 === undefined) {
- cache0 = new WeakMap();
- }
- let cache1 = cache0.get(a1);
- if (cache1 === undefined) {
- cache1 = new WeakMap();
- cache0.set(a1, cache1);
- }
- let cache2 = cache1.get(a2);
- if (cache2 === undefined) {
- cache2 = new WeakMap();
- cache1.set(a2, cache2);
- }
- let fnResult = cache2.get(a3);
- if (fnResult === undefined) {
- fnResult = fn(a1, a2, a3);
- cache2.set(a3, fnResult);
- }
- return fnResult;
- };
- }
|