Skip to content

Instantly share code, notes, and snippets.

@Dimitreee
Created March 10, 2018 17:22
Show Gist options
  • Save Dimitreee/b1cead86e6fbb6183daa058bece168d4 to your computer and use it in GitHub Desktop.
Save Dimitreee/b1cead86e6fbb6183daa058bece168d4 to your computer and use it in GitHub Desktop.
// простая чистая функция, которая возвращает сумму аргумента и 10
const add = (n) => (n + 10);
console.log('Simple call', add(3));
// простая функция, принимающая другую функцию и
// возвращающая её же, но с мемоизацией
const memoize = (fn) => {
let cache = {};
return (...args) => {
let n = args[0]; // тут работаем с единственным аргументом
if (n in cache) {
console.log('Fetching from cache');
return cache[n];
}
else {
console.log('Calculating result');
let result = fn(n);
cache[n] = result;
return result;
}
}
}
// создание функции с мемоизацией из чистой функции 'add'
const memoizedAdd = memoize(add);
console.log(memoizedAdd(3)); // вычислено
console.log(memoizedAdd(3)); // взято из кэша
console.log(memoizedAdd(4)); // вычислено
console.log(memoizedAdd(4)); // взято из кэша
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment