我刚开始接触 Javascript 世界,我有疑问......
我有以下功能,只要随机值为204,我希望它重复。当代码为200时它应该停止,如果是500则通知错误并停止。该请求将每秒重复一次(因此使用 setInterval 虽然我不知道我是否正确执行)
我也想让它尝试X次也停止...我不知道如何实现它,可以用计数器吗?
var myArray = [200, 500, 404, 204];
var encontrado = false;
var cont = 0;
var repeticion = setInterval(function aleatorio() {
var rand = myArray[Math.floor(Math.random() * myArray.length)];
if (rand == 200) {
console.log("HTTP 200! Encontrado!");
encontrado = true;
} else if (rand == 500) {
console.log("HTTP 500! Error interno del servidor");
encontrado = true;
} else if (rand == 204) {
console.log("HTTP 204!");
} else if (rand == 404) {
console.log("HTTP 404!");
}
cont++;
if (encontrado === true) {
stopFunction();
}
}, 1000);
function stopFunction() {
clearInterval(repeticion);
}
这是一个小型模拟,因为稍后将使用来自服务器的真实响应和另一个功能。
我试图用 do-while 来完成所有这些,但从逻辑上讲,计时器主题不受支持。如果有人知道它也可以作为一种解决方法。
如何优化我的代码并修复缺失的内容?谢谢
代码
解释
根据您在问题中的陈述,为了执行一定数量的重复而不是关闭,您可以考虑以下几点:
第一的
我们已经声明了一些将在区间函数之外的变量:
在这种情况下,改变变量的值
limite
,代码只会被执行多次,例如我们留下 10 次。该变量
contador
用于计算重复次数,并将与limite
每次执行进行比较。该变量
bandera
将评估是否找到了所需的值。第二
在函数的最后,我们执行这条语句:
在这种情况下,我们向程序指示的内容类似于:
所以函数体会被执行多次,而不需要多次执行同一个函数。
当我不得不使用 setInterval 时,我以下列方式使用它:
现在假设我们创建了一个每秒 (1000) 次执行的方法,称为 verifyCode(),并且应该接收在这种情况下您使用 Math.random() 生成的代码:
我尽量不要过多改变内部逻辑,这取决于你想做什么,我在Stop setInterval 调用中找到了 clearInterval()