как я могу добавить for l oop, чтобы остановить бесконечный цикл - PullRequest
0 голосов
/ 03 августа 2020

Я хочу, чтобы этот код продолжал попытки после получения ошибки примерно 10 раз после того, как 10 раз он должен прекратить попытки, и вместо попытки он покажет сообщение о том, что что-то не так, поэтому я выбросил там ошибку с целью заставить его выдавать ошибки и a для l oop, но вместо этого он продолжает попытки в отдельных сообщениях об ошибках, как показано в pi c ниже, так как я могу добавить это для l oop, чтобы он мог перестать пытаться запустить функция и показать вместо этого сообщение?

введите описание изображения здесь

это мой код:

async function getQuote() {
loading();

const apiUrl = 'https://cors-anywhere.herokuapp.com/http://api.forismatic.com/api/1.0/? 
method=getQuote&format=json&lang=en';
try {

const response = await fetch(apiUrl) 
const data = await response.json();

// Changing the blank Author textfield to Unknown
if (data.quoteAuthor === ''){
    authorText.innerText = 'Unknown';
} else {
    authorText.innerText = data.quoteAuthor;
}
if (quoteText.innerText.length > 120){
    quoteText.classList.add('long-quote');
} else {
    quoteText.classList.remove('long-quote');
}
quoteText.innerText = data.quoteText

//Stop loader, Show Quote
complete();

throw new Error("Opss!")
} catch(error) { 
for(let i=0; i < 10 ; i++){
    getQuote();
    // console.log('something went wrong!', error);
 }
}
}

1 Ответ

0 голосов
/ 03 августа 2020

вы можете попробовать создать глобальную переменную, которая подсчитывает количество ошибок и выходит из l oop на определенное число

async function getQuote(numOfTries = 1) {
  try {
    ...

    throw new Error("Opss!")
  }
  catch (error) {
    if (numOfTries === 10) {
      console.log('something went wrong!', error);
    } else {
      numOfTries++;
      getQuote(numOfTries);
    }
  }
}
...