We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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