¿podría ayudarme a solucionar esto? Quiero enviar solo un comando, pero para ser lo más preciso posible (en milisegundos). Esta es la parte que necesito arreglar:
document.getElementById("arrTime").onclick = function () { clearInterval(attInterval); let time = document.getElementsByClassName("relative_time")[0].textContent.slice(-8); input = prompt("Set Arrival Time", time); inputMs = parseInt(prompt("Set the milliseconds", "500")); delay = parseInt(delayTime) + parseInt(inputMs); let arrivalTime; arrInterval = setInterval(function () { arrivalTime = document.getElementsByClassName("relative_time")[0].textContent; if (arrivalTime.slice(-8) >= input) { setTimeout(function () { document.getElementById("troop_confirm_submit").click(); }, delay); } }, 5); document.getElementById("showArrTime").innerHTML = input + ":" + inputMs.toString().padStart(3, "0"); document.getElementById("showSendTime").innerHTML = ""; };Ahora, hay una "sentencia if" para realizar la acción en la entrada de ArrivalTime.slice (-8) >= (por ejemplo, 19:24:30), pero está enviando solicitudes cada 5 ms. Entonces, durante esa segunda vez, envía 200 solicitudes al servidor. No quiero cambiar esos 5 ms, ya que necesito que sea lo más preciso posible, pero quiero romper el script, congelarlo o dormirlo durante 1 segundo una vez que se ejecuta el comando. Así que algo así como: setTimeout(function () { document.getElementById("troop_confirm_submit").click(); Sleep 1 second }, delay);
¿Alguien que pueda ayudar, por favor?
Aconsejaría dividir las funciones para administrar el intervalo un poco más fácilmente.
document.getElementById("arrTime").onclick = function() { clearInterval(attInterval); let time = document.getElementsByClassName("relative_time")[0].textContent.slice(-8); input = prompt("Set Arrival Time", time); inputMs = parseInt(prompt("Set the milliseconds", "500")); delay = parseInt(delayTime) + parseInt(inputMs); startInterval(input, delay) document.getElementById("showArrTime").innerHTML = input + ":" + inputMs.toString().padStart(3, "0"); document.getElementById("showSendTime").innerHTML = ""; }; function startInterval(input, delay) { arrInterval = setInterval(function() { let arrivalTime = document.querySelector(".relative_time").innerText; if (+arrivalTime.slice(-8) >= +input) { clearInterval(arrInterval); // pause the interval setTimeout(() => { startInterval(input, delay) }, 1000 * 60); // restart the interval in 1 minute setTimeout(() => { document.querySelector("#troop_confirm_submit").click(); }, delay); } }, 5); }