once использует замыкание для хранения признака выполнения и результата между вызовами возвращённой функции.
Как работает замыкание? Объясни на примере реализованной функции once.
once использует замыкание для хранения признака выполнения и результата между вызовами возвращённой функции.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
once использует замыкание для хранения признака выполнения и результата между вызовами возвращённой функции.
Например, при повторе после синхронной ошибки разрешим новую попытку:
function once(fn) {
let done = false;
let result;
return function (...args) {
if (!done) {
result = fn.apply(this, args);
done = true;
}
return result;
};
}
Каждый вызов once создаёт своё окружение. Если fn возвращает Promise, сохраняется он, включая возможный отказ; рекурсивный повторный вход в обёртку до завершения fn в этот простой контракт не входит.