Кэширование Promise
СреднееРеализуйте cachePromise(fn) - кэширует результаты async функции (мемоизация).
Что такое кэширование/мемоизация?
Сохранение результатов выполнения функции, чтобы при повторном вызове с теми же аргументами вернуть сохранённый результат вместо повторного выполнения.
Требования:
- Принимает async функцию и возвращает обёрнутую версию
- При первом вызове с аргументами - выполняет функцию и сохраняет результат
- При повторном вызове с теми же аргументами - возвращает сохранённый результат
- Ключ кэша = JSON.stringify(arguments)
Пример:
let apiCalls = 0;
const fetchUser = cachePromise(async (id) => {
apiCalls++;
return await fetch(`/api/users/${id}`);
});
await fetchUser(1); // выполнит запрос, apiCalls = 1
await fetchUser(1); // вернёт из кэша, apiCalls = 1
await fetchUser(2); // выполнит запрос, apiCalls = 2JavaScript•UTF-8
Run your code to see results.
Click the Run button above
Mobile view - please use desktop for better experience