我有一个脚本,可以更改一些值并单击浏览器中的一些按钮。我正在寻找一种方法来暂停代码的执行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()
在JavaScript中没有与Python的time.sleep()
等效的东西,它通常通过设计异步执行。如果您想延迟代码的执行,可以使用setTimeout
,正如您所提到的。
如果不了解代码应该做什么,我就无法为这个问题提出理想的体系结构。肯定有比我要建议的更好的方法。不过,为了回答你的问题,你可以用这种方式模拟你在问什么:
function roll() {
$bet.val(start);
$button.click();
setTimeout(function () {
$button.click();
setTimeout(function () {
refreshIntervalId = setInterval(roll2, 2000);
}, 1000);
}, 1000);
}
在超时内设置超时如何?
function roll() {
$bet.val(start)
$button.click()
setTimeout(function() {
$button.click();
setTimeout(
function() {
$button.click();
refreshIntervalId = setInterval(roll2, 2000)
},
5000
);
},
5000
);
}
此外,请参阅:https://stackoverflow.com/a/951057/2119863