There was an error while loading. Please reload this page.
Generate result-cached version of a function.
function memoize(x, fr, cache) // x: a function // fr: resolver ((...args) => unique key) [IDENTITY] // cache: result cache [Map()]
const xasyncfn = require('extra-async-function'); var calls = 0; function factorialRec(n: number) { if (n<=1) return 1; return n * factorialRec(n-1); } async function factorial(n: number) { ++calls; return factorialRec(n); } var fn = xasyncfn.memoize(factorial); await fn(3); // → 6 await fn(4); // → 24 await fn(5); // → 120 await fn(3); // → 6 await fn(4); // → 24 await fn(5); // → 120 calls; // → 3 var calls = 0; async function hypot(x: number, y: number) { ++calls; return Math.hypot(x, y); } async function resolver(x: number, y: number) { return 4093*y + x; // a hash } var fn = xasyncfn.memoize(hypot, resolver); await fn(3, 4); // → 5 await fn(6, 8); // → 10 await fn(5, 12); // → 13 await fn(3, 4); // → 5 await fn(6, 8); // → 10 await fn(5, 12); // → 13 calls; // → 3