Вопрос проверяет понимание механизмов обработки длительных асинхронных операций на клиенте, таких как опрос сервера (polling) или WebSocket, и их применимость для фоновых задач.
Когда клиент инициирует операцию, которая может выполняться минуты или часы (например, генерация отчета или обработка видео), нельзя держать HTTP-соединение открытым всё это время. Вместо этого применяют асинхронные паттерны, которые позволяют клиенту узнавать о завершении задачи без блокировки интерфейса.
async function checkTaskStatus(taskId) {
const response = await fetch(`/api/tasks/${taskId}`);
const data = await response.json();
return data.status;
}
async function pollTask(taskId, interval = 5000) {
let status = await checkTaskStatus(taskId);
while (status === 'pending') {
await new Promise(resolve => setTimeout(resolve, interval));
status = await checkTaskStatus(taskId);
}
console.log('Task completed with status:', status);
}Для длительных операций на клиенте выбирайте polling, если важна простота, или WebSocket, если нужна мгновенная обратная связь. Polling подходит для задач с предсказуемым временем выполнения, WebSocket — для интерактивных приложений.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
JavaScript
Node.js
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию