Middle
// Szükséges ellenőrizni a problémát két szolgáltatáson, hívásokkal: // 1. checkResult(url1, solution) // 2. checkResult(url2, solution) // // checkResult: (url: string, solution: string | number) => Promise<boolean>; // // - Ha mindkét kérés true-t ad vissza - írja ki a success-t a console.log() -ba // - Ha valamelyik false-t ad vissza - írja ki a fail-t a console.log() -ba // - Ha valamelyik nem válaszol - írja ki az error-t a console.log() -ba // - Ha valamelyik 1 másodpercnél hosszabb ideig válaszol - írja ki a timeout-ot a console.log() -ba
sobes.tech MI
Válasz az MI-től
Для решения задачи нужно параллельно вызвать 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".