> Как создать собственную функцию executor в Promise в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Яндекс
Стек: JavaScript
> Пример ответа
Собственная функция executor в Promise - это функция, которая передаётся в конструктор new Promise(executor). Executor принимает два параметра: resolve и reject, которые являются функциями для изменения состояния промиса. Вы можете создать свою обёртку, например, для повторных попыток или задержки.
Пример: функция delayPromise, которая создаёт промис с задержкой:
JAVASCRIPTfunction delayPromise(ms) {return new Promise((resolve) => {setTimeout(resolve, ms);});}// Использование:delayPromise(1000).then(() => console.log('Прошла 1 секунда'));
Более сложный пример - executor с повторными попытками (retry):
JAVASCRIPTfunction retryExecutor(fn, retries = 3) {return new Promise(async (resolve, reject) => {for (let attempt = 1; attempt <= retries; attempt++) {try {const result = await fn();resolve(result);return;} catch (error) {if (attempt === retries) {reject(error);} else {console.log(`Попытка ${attempt} не удалась, повтор...`);}}}});}// Использование:const fetchData = () => fetch('https://api.example.com/data');retryExecutor(fetchData, 3).then(data => console.log(data)).catch(err => console.error('Ошибка после 3 попыток', err));
Ключевой момент: executor выполняется синхронно при создании промиса, поэтому асинхронные операции (например, setTimeout или fetch) нужно оборачивать в вызовы resolve/reject.
> Похожие задачи по frontend
Как реализовать кэш с методами get, set, delete и clear с поддержкой TTL в JavaScript
Как обрабатывать JSON ответ в JavaScript
Почему нельзя использовать Map вместо объекта для возвращаемого значения метода groupBy в JavaScript
Какой тип данных должна возвращать функция retry в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью