> Как отследить момент запуска и завершения обычной функции в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Домклик
Стек: JavaScript
> Пример ответа
Для отслеживания момента запуска и завершения обычной функции в JavaScript можно использовать несколько подходов. Самый простой - добавить логирование непосредственно в тело функции:
JAVASCRIPTfunction myFunction() {console.log('Функция запущена:', new Date().toISOString());// ... тело функцииconsole.log('Функция завершена:', new Date().toISOString());}
Более гибкий способ - обернуть функцию в декоратор (higher-order function), который автоматически добавляет логирование:
JAVASCRIPTfunction trackExecution(fn) {return function(...args) {console.log(`Запуск ${fn.name} в ${new Date().toISOString()}`);const result = fn.apply(this, args);console.log(`Завершение ${fn.name} в ${new Date().toISOString()}`);return result;};}// Использованиеfunction calculateSum(a, b) {return a + b;}const trackedSum = trackExecution(calculateSum);trackedSum(2, 3); // Выведет время запуска и завершения
Для асинхронных функций (async/await) нужно учитывать Promise:
JAVASCRIPTfunction trackAsyncExecution(fn) {return async function(...args) {console.log(`Запуск ${fn.name} в ${new Date().toISOString()}`);try {const result = await fn.apply(this, args);console.log(`Завершение ${fn.name} в ${new Date().toISOString()}`);return result;} catch (error) {console.log(`Ошибка в ${fn.name} в ${new Date().toISOString()}`);throw error;}};}
Также можно использовать Proxy для автоматического отслеживания всех методов объекта, но для отдельной функции декоратор - наиболее лаконичное и читаемое решение.
> Похожие задачи по frontend
Почему не использовать простой численный цикл в JavaScript
Можно ли делать асинхронные запросы внутри редюсера Redux и почему
Что такое SPA приложение
Всегда ли JavaScript выполняется после события onload
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью