Вопрос проверяет понимание асинхронности в JavaScript и разницы между setTimeout и Promise при эмуляции задержки API.
При эмуляции задержки API часто используют setTimeout, но он сам по себе не возвращает Promise. Оборачивание в Promise позволяет использовать современные паттерны асинхронного программирования, такие как async/await и цепочки .then().
function fetchData(callback) {
setTimeout(() => {
callback('data');
}, 1000);
}
fetchData((data) => {
console.log(data); // 'data'
});Здесь код становится вложенным, сложно обрабатывать ошибки и комбинировать несколько асинхронных операций.
function fetchData() {
return new Promise((resolve) => {
setTimeout(() => {
resolve('data');
}, 1000);
});
}
async function main() {
const data = await fetchData();
console.log(data); // 'data'
}Теперь код выглядит как синхронный, легко читается и поддерживается. Можно использовать try/catch для обработки ошибок.
Без Promise вы теряете возможность использовать await. Придётся работать с колбэками, что приводит к callback hell при множественных запросах. Также сложнее комбинировать асинхронные операции (например, Promise.all).
Вывод: Оборачивание setTimeout в Promise — это стандартный паттерн для эмуляции асинхронных операций, который делает код чище, проще для отладки и масштабирования. Используйте его в тестах, прототипах и при работе с асинхронными API.
Уровень
Рейтинг:
4
Сложность:
4
Навыки
JavaScript
Node.js
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию