// реализовать функцию, которая делать сетевой запрос, если запрос завершается ошибкой - повторяет попытку через секунду.
// И так три раза.
// После трех неудачных попыток - завершается ошибкой. Или возвращает успешный результат.
function runWithRetry(url, times = 3) {
return new Promise((resolve, reject) => {
const doRequest = (attempt) => {
fetch(url)
.then((response) => {
if (response.ok) {
return response.json();
} else {
throw new Error("Network response was not ok");
}
})
.then((data) => {
// Действия при успешном выполнении запроса
resolve(data);
})
.catch((error) => {
// Действия при возникновении ошибки
if (attempt < times) {
setTimeout(() => doRequest(attempt + 1), 1000);
} else {
reject(error);
}
});
};
doRequest(1);
});
}
runWithRetry("https://api.openweathermap.org/data/2.5/weather?q=moscow", 3)
.then((response) => {
console.log(response);
})
.catch((err) => {
console.log("Error:", err.message);
});
// getData('[https://api.openweathermap.org/data/2.5/weather?q=moscow(https://api.openweathermap.org/data/2.5/weather?q=moscow "https://api.openweathermap.org/data/2.5/weather?q=moscow")', 3)
// .then((response) => { console.log(response) })
// .catch((err) => { console.log('Error', err.message) })