我如何添加for循环来停止无限循环

时间:2020-08-03 11:49:16

标签: javascript api for-loop infinite-loop

我想让此代码在10次出错后继续尝试10次后继续尝试,它应该停止尝试,而不是尝试它将显示一条消息,而不是出现了问题, 所以我故意在其中抛出一个错误,使它给出错误和一个for循环,但相反,它一直尝试在单独的错误消息中进行尝试,如下图所示,因此,我如何添加该for循环,以便它可以停止尝试运行该函数并而是显示一条消息?

enter image description here

这是我的代码:

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 :(得分:0)

您可以尝试构建一个全局变量,该变量可以计算错误数量并以一定数量跳出循环

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);
    }
  }
}