我有代码,需要做的请求一些服务器与令牌,有时你需要运行代码两次以获得数据。 (完全相同的代码)如何确保代码只运行两次,而不是递归运行?
在第一次运行中的大多数时候,我得到http响应401,而第二次运行则得到http 200
这是密码
async function magt() {
let auth: any;
try {
auth = await getTokens();
if (auth.runtime?.status == 200 && auth.application?.status == 200) {
...
//run rest of the code
} else {
console.log("unable to fetch tokens")
if (auth.response.status == 401) {
console.log("Running for the second time to get valid token")
await magt()
}
}
} catch (e) {
console.log("error occurred while fetching token: ", e)
}
我想确保如果我总是得到401,只运行magt()
函数两次,最好的方法是什么?
有没有更好的方法从一些简单的计数器,它是由全局定义的?
async function magt(iterationLeft) {
let auth: any;
iterationLeft--;
try {
auth = await getTokens();
if (auth.runtime?.status == 200 && auth.application?.status == 200) {
...
//run rest of the code
} else {
console.log("unable to fetch tokens")
if (auth.response.status == 401 && iterationLeft) {
console.log("Running for the second time to get valid token")
await magt(iterationLeft)
}
}
} catch (e) {
console.log("error occurred while fetching token: ", e)
}
以迭代次数为参数进行调用magt(2);
一个简单的for循环怎么样?
async function magt() {
for (var attempt = 0; attempt < 2; attempt++) {
try {
let auth = await getTokens();
if (auth.runtime?.status == 200 && auth.application?.status == 200) {
return true;
}
console.log("Invalid auth response:", auth.response);
} catch (e) {
console.log("error occurred while fetching token: ", e);
}
}
throw new Error("All attempts at magt'ing failed miserably");
}
async function something() {
await magt();
//"run rest of the code"
}
或者,如果您觉得更有趣,可以编写一个包装器函数来重试异步函数:
async function retrying(func, attempts) {
for (let attempt = 0; attempt < attempts; attempt++) {
try {
return await func();
} catch (err) {
console.log(func, "attempt", attempt, "failed:", err);
}
}
throw new Error("retry failed");
}
async function checkToken() {
const auth = await getTokens();
if (auth.runtime?.status == 200 && auth.application?.status == 200) {
return auth;
}
throw new Error("invalid auth response: " + auth.response);
}
async function magt() {
const token = await retrying(checkToken, 2);
}
有一种方法可以运行junit测试,只需在“mvn clean install”命令中添加参数?没有使用@Profile注释测试。
我正在Scala中编写一个Spark作业,它读取S3上的parquet文件,执行一些简单的转换,然后将它们保存到DynamoDB实例中。每次运行时,我们都需要在Dynamo中创建一个新的表,所以我编写了一个Lambda函数,它负责表的创建。Spark作业所做的第一件事是生成一个表名,调用我的Lambda函数(将新表名传递给它),等待创建表,然后正常地执行ETL步骤。 但是,看起来我的Lambda函
如何在c: if条件中使用"ft"的值。 以下是我在JSP中使用代码的方法(示例代码) 我的任务说明:需要减去两个日期并检查条件是否大于48小时,该行应高亮显示为绿色,否则精细(无变化)。 所以我从数据库中获取值,并在JSP页面中进行验证,以根据条件突出显示行。
我不知道发生了什么事情。即使条件是假的,if块中的代码仍然运行。我在netbeans IDE7.4中设计了我的界面,只需在Eclipse中复制粘贴设计。以下是我的代码 无论我在jinstrument jcombobox中选择什么,我都会得到“inside if”作为输出。我已经检查了print语句,但enterloop的值为0,它仍然进入if语句块。请帮助我解决这个问题
问题内容: codepad.org允许您在线运行C,C ++,D等代码,但不能运行Java …我可以使用Java的网站吗? 问题答案: 还有http://ideone.com/(支持多种语言)
我似乎一直在尝试在vscode中运行python3文件。我注意到右上角运行代码的三角形按钮也不再是绿色。 我已经为python3建立了自己的venv,并且安装了numpy包——我已经检查了< code>pip list,它在那里,并且在导入时调用这个包中的任何方法时运行良好。 当我右键单击vscode中的文件并单击在终端中运行Python文件时-它运行得非常好,并为我提供了所需的输出。 但是,当我
问题内容: 对于一个学校项目,我正在用Python制作子手游戏。现在,我的代码从字典中选择一个单词,如下所示: 现在,必须在运行之前在代码中设置单词列表,但是我添加了在运行时将单词添加到列表中的功能: 但是,一旦退出代码,显然不会保存添加的单词,因此,我将不得不手动将所有单词添加到列表中,或者每次代码启动后都将一堆单词添加到列表中。所以我想知道是否有一种简单的方法可以在代码完成后保存变量,以便Wo
我想创建一个条件,当用户下订单时,有一个线程运行20秒来检查数据库的支付状态是完成还是挂起,如果完成了,线程将停止,如果仍然挂起,线程将继续运行20秒,并更新数据库中的状态以取消,我使用mybatis和XML映射器 这是我的代码 下面是我在控制器中的代码 这是数据库 它不会显示任何错误,但也不会改变任何东西...