Изучая функциональное программирование, мы реализовывали функцию-декоратор memo
Функция memo
принимает синхронную функцию и возвращает новую функцию, которая работает так же, как исходная, но если мы передаем аргумент, с которым функция вызывалась ранее, мы не вызываем исходную функцию, а достаем результат из кэша.
Реализуйте функцию asyncMemo
, которая работает аналогично для асинхронных функций.
Для простоты можно считать, что функция, передаваемая в asyncMemo
, принимает ровно один аргумент и всегда возвращает промис.
const double = async x => x * 2; const mDouble = asyncMemo(double); mDouble(10).then(x => console.log(x)); // вызывается double, выводится 20 mDouble(10).then(x => console.log(x)); // double повторно не вызывается, но тоже выводится 20