javascript - 我怎样才能添加一个for循环来停止无限循环
问题描述
我想让这段代码在收到错误之后继续尝试 10 次之后它应该停止尝试而不是尝试它会显示一条消息而不是显示有问题,所以我故意在那里抛出一个错误它给出了错误和一个 for 循环,但它一直在尝试单独的错误消息,如下图所示,那么我如何添加该 for 循环以便它可以停止尝试运行该函数并显示一条消息?
这是我的代码:
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);
}
}
}
解决方案
您可以尝试构建一个全局变量来计算错误的数量并以一定的数量跳出循环
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);
}
}
}
推荐阅读
- azure-data-factory - 在 azure 数据工厂中以数组格式存储单列 csv 文件
- mysql - 如何将两个单独的 sql 查询组合成两个单独的列?
- arrays - 可以在 C 中正确声明一个 char 字符串
- javascript - AddEventListener 不适用于动态 DOM
- linux - 什么是 SET_NETDEV_DEV 函数是它是否使“pci_dev”成为“net_device”的父级。它有什么作用。瑞昱
- oop - 涉及 HTMLElements 的决策树的规则模式、状态模式或其他东西?
- paypal - PayPal 权限 API 更新集成
- javascript - 为什么相同的“按钮计数器代码”在 Sandbox React 中不起作用
- python - 从保存的 HTML 文件返回日期 *如果*日期存在
- spring-boot - 根据 Camunda 中的产品属性进行动态用户任务分配