我有一个脚本可以更改某些值并单击浏览器中的某些按钮。我正在寻找一种方法来暂停执行代码x秒,而不会让浏览器出现滞后。我正在使用Firefox,并将此脚本粘贴到其控制台中。我知道 setTimeout()函数。但是,此函数不会停止执行代码,而是等待x秒直到执行它。我正在寻找一个类似于 Python的time.sleep()函数的完整解决方案,并完全暂停代码的执行。
var init = 0.01
var start = init
var $odds = $("#oddsOverUnder")
var $button = $("#roll")
var $bet = $("#bet")
function roll(){
$bet.val(start)
$button.click()
//i want to pause the execution of the code here//
$button.click()
//and here//
refreshIntervalId=setInterval(roll2, 2000)}
function roll2(){
var tr = document.querySelector("#myBetsTable tr:nth-child(2)")
var cls = tr.getAttribute('class')
if (cls === 'success'){
start = init
$bet.val(start)}
else{
start = start * 2
$bet.val(start)
$odds.click()}
clearInterval(refreshIntervalId)
roll()}
roll()
答案 0 :(得分:1)
如何在超时内设置超时?
function roll() {
$bet.val(start)
$button.click()
setTimeout(function() {
$button.click();
setTimeout(
function() {
$button.click();
refreshIntervalId = setInterval(roll2, 2000)
},
5000
);
},
5000
);
}
答案 1 :(得分:1)
在JavaScript中没有与Python的time.sleep()
等价的东西,它通常是按设计异步执行的。如果您想延迟执行代码,可以使用setTimeout
,如您所述。
如果不准确理解您的代码应该做什么,我无法建议这个问题的理想架构。肯定有一种更好的方式来实现它,而不是我要提出的建议。不过,要回答你的问题,你可以用这种方式模拟你的问题:
function roll() {
$bet.val(start);
$button.click();
setTimeout(function () {
$button.click();
setTimeout(function () {
refreshIntervalId = setInterval(roll2, 2000);
}, 1000);
}, 1000);
}