> Как создать собственную функцию executor в Promise в JavaScript (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Яндекс

Стек: JavaScript

> Пример ответа

Собственная функция executor в Promise - это функция, которая передаётся в конструктор new Promise(executor). Executor принимает два параметра: resolve и reject, которые являются функциями для изменения состояния промиса. Вы можете создать свою обёртку, например, для повторных попыток или задержки.

Пример: функция delayPromise, которая создаёт промис с задержкой:

JAVASCRIPT
function delayPromise(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
// Использование:
delayPromise(1000).then(() => console.log('Прошла 1 секунда'));

Более сложный пример - executor с повторными попытками (retry):

JAVASCRIPT
function 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.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью