Back to questions
Яндекс Маркет
Middle
3
// Необходимо проверить решение задачи по двум сервисам, вызвав: // 1. checkResult(url1, solution) // 2. checkResult(url2, solution) // // checkResult: (url: string, solution: string | number) => Promise<boolean>; // // - Если оба запроса вернули true - вывести в console.log() success // - Если хоть один вернул false - вывести в console.log() fail // - Если хоть один не ответил - вывести в console.log() error // - Если хоть один отвечает дольше 1 сек - вывести в console.log() timeout
Companies where asked
Answer from AI
sobes.tech AI
Для решения задачи нужно параллельно вызвать checkResult для двух URL и обработать результаты с учетом таймаута и ошибок.
Пример на JavaScript с использованием Promise.race для таймаута:
async function verifySolution(url1, url2, solution) {
const timeoutPromise = new Promise((_, reject) =>
setTimeout(() => reject(new Error('timeout')), 1000)
);
try {
const [res1, res2] = await Promise.all([
Promise.race([checkResult(url1, solution), timeoutPromise]),
Promise.race([checkResult(url2, solution), timeoutPromise])
]);
if (res1 === true && res2 === true) {
console.log('success');
} else {
console.log('fail');
}
} catch (error) {
if (error.message === 'timeout') {
console.log('timeout');
} else {
console.log('error');
}
}
}
Логика:
- Если оба ответа true — выводим "success".
- Если хоть один false — "fail".
- Если хоть один промис отклоняется (например, ошибка сети) — "error".
- Если хоть один промис не ответил за 1 секунду — "timeout".