如何在不使浏览器滞后的情况下暂停Javascript的执行
How to pause the execution of Javascript without making a browser lag out?
我有一个脚本,可以更改一些值并单击浏览器中的一些按钮。我正在寻找一种方法来暂停代码的执行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
相关文章:
- 如何在未直接触发的情况下停止事件
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- 在不打开聊天屏幕的情况下制作Zopim-ding代理
- 在不阻止默认行为的情况下检测IE10中的缩放
- 如何在不传递此信息的情况下查找被调用的元素
- 如何在不刷新页面的情况下更新显示框
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- JavaScript-在手机上不工作的情况下,在外部单击时隐藏元素
- 在我的情况下,如何进行http请求
- 在不知道深度或父属性的情况下从对象中删除属性
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- ROR:如何在不重新加载浏览器的情况下从控制器获取参数
- 如何在不影响其他元素的情况下扩展DIV
- 如何在内联依赖项并将图像转换为dataURI的情况下完全提取网页
- 在不移动内部文本的情况下缩放元素的效果
- 在不设置协议的情况下,使用javascript/jquery更改iframe-src
- 如何在不使浏览器滞后的情况下暂停Javascript的执行
- 在没有鼠标的情况下暂停 HTML 选框的最有效方法
- 如何在没有控件的情况下暂停视频.js视频