首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我需要帮助在firefox中的dev控制台中创建一个循环

我需要帮助在firefox中的dev控制台中创建一个循环
EN

Stack Overflow用户
提问于 2018-12-27 08:10:10
回答 3查看 905关注 0票数 0

我试图使用开发控制台每5秒给马里奥一个蘑菇(在浏览器游戏超级马里奥html5)

我可以手动给马里奥蘑菇输入marioShroons(马里奥),但我想让它在循环,所以我不需要暂停游戏,每次我想要蘑菇。我已经尝试了一个while循环,并设置了超时,但我无法理解它。我唯一熟悉的编码语言是c++和html。**

代码语言:javascript
复制
while(data.time.amount > 0) {
  killOtherCharacters()
}

setTimeout(function() {
  killOtherCharacters()
}, 1000);

我期望这些代码行不会给我一个蘑菇,而是自动杀死敌人。但是在第一次尝试( while循环)中,它冻结了选项卡,我不得不重新加载页面。

设置超时后,它没有产生任何明显的结果,它只杀死了所有接近的字符一次,然后停止。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-12-27 08:34:40

您尝试使用setTimeout,它只工作了一次。这是意料之中的,因为:

Window.setTimeout()设置一个计时器,它在计时器过期后执行函数或指定的代码。

来自MDN

您需要做的是使用setInterval

setInterval() method...repeatedly调用函数或执行代码段,每次调用之间有固定的时间延迟。

来自MDN

因此,在您的控制台中,您应该这样写:

代码语言:javascript
复制
setInterval(killOtherCharacters, 1000);

(我删除了匿名函数,因为它并不需要-只有在传递参数或执行多件事情时才需要匿名函数。但是,您确实需要为此删除() )。

如果要停止函数的执行,请将变量赋值到间隔:

代码语言:javascript
复制
var killCharacters = setInterval(killOtherCharacters, 1000);

然后对该变量调用clearInterval以清除间隔(停止循环):

代码语言:javascript
复制
clearInterval(killCharacters);
票数 0
EN

Stack Overflow用户

发布于 2018-12-27 08:15:49

thing循环冻结页面的原因是Javascript一次只能做一件事,并且告诉它始终运行自己的while函数,阻止所有其他Javascript在您的站点上运行。

setTimeout只在设定时间(见文件)之后运行一次,如果您想每隔x毫秒运行一次,最好是使用setInterval代替

代码语言:javascript
复制
var intervalID = window.setInterval(killOtherCharacters(), 500); //run this every 500 ms
票数 0
EN

Stack Overflow用户

发布于 2018-12-27 08:17:14

如果希望重复调用setInterval (),请使用killOtherCharacters。

代码语言:javascript
复制
const interval = setInterval(function() {killOtherCharacters() },1000);

然后,当您希望停止调用该函数时:

代码语言:javascript
复制
clearInterval(interval);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53941749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档