【问题标题】:How to stop repeating of variables of "setInterval" Javascript如何停止重复“setInterval”Javascript的变量
【发布时间】:2020-09-04 10:51:44
【问题描述】:

我是 JS 的初学者,现在正在编写一个 javascript 应用程序

在应用程序中有一个按钮,当用户点击它时,一扇门应该打开 10 秒然后再次关闭

我使用“设置间隔”来执行此功能:

    var rVars = []
    rVars.push( {name:"door", val:1} ) // 1 for open , 0 for close

  _server.setRoomVariables(r, user, rVars)
  var params = {}
  params.user = user
  params.r = r
  
  myInterval = setInterval("TimeForClose", 20000, params)

这是10秒后负责关门的代码

function TimeForClose(params){

    var rVars = []
    rVars.push( {name:"door", val:0} )

  _server.setRoomVariables(params.r, params.user, rVars)}

它成功完成了,但问题是我发现“TimeForclose”功能每 10 秒重复一次,这使得当另一个用户点击按钮并为他打开门时,第一个重复的功能仍然重复将也为第二个用户关上门,他们每个人的两个功能都将重复,依此类推。

所以我读到我必须使用“清除间隔”或计时器来停止重复,但是当我使用它时,它并没有停止重复,所以我认为我用错了

那么停止重复的最佳方法是什么? (我只希望该功能在有人单击按钮时发生一次然后停止)。

希望你给我正确的代码语法

【问题讨论】:

  • 尝试 setTimeout 函数而不是间隔
  • @Sagar 你能帮我写代码吗?取决于上面的代码?我是 Javascript 初学者,谢谢
  • 只需将 setInterval 替换为 setTimeout。
  • @Alpeto 添加了一个答案
  • @Sagar 谢谢你的帮助,但是当我按照你说的那样做时,门现在根本没有关上所以你能告诉我如何使用 clearInterval() 吗?

标签: javascript settimeout setinterval


【解决方案1】:

是的,正如你所说,你可以在关闭那个门窗后使用clearInterval(),尝试一次

【讨论】:

  • 我应该把它放在哪里?在新功能中还是在哪里?
  • 使用新函数调用clearInterval(),这里新函数必须在你的门窗关闭后调用
  • 我明白你的意思但是请原谅我缺乏经验,我还是一个初学者,你能根据上面的代码写吗?
【解决方案2】:

如果只需要执行一次,可以使用setTimeout 将 setIntervalm 更改为 setTimeout

 myInterval =  setTimeout("TimeForClose", 20000, params)

函数只执行一次。如果需要重复执行,请使用setInterval()方法。

如果您需要根据一些外部事件重复执行和停止,您可以使用clearTimeout()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多