【问题标题】:change a property of an object if the current time exceeds time + 30 seconds - javascript如果当前时间超过时间 + 30 秒,则更改对象的属性 - javascript
【发布时间】:2017-11-01 21:24:02
【问题描述】:

我目前有以下:

let time = Date.now()

如果当前时间超过time + 30 seconds,我需要更改对象的属性。我需要每 10 秒进行一次检查。

let obj = {
    timestamp: Date.now(),
    has30secExceeded: true or false
}

我需要设置的属性是 has30secExceeded。实现这一目标的最佳方法是什么?提前致谢。

【问题讨论】:

  • 这是在浏览器还是后端运行?超过 30 秒时你想发生什么?
  • 使用 setInterval 每隔 10 秒检查一次,并据此更改其属性
  • 你的意思是如果obj.timestamp > time+ 30秒就想改变属性?
  • 你在这里得到了很好的答案,但我会说这让我觉得很奇怪。什么代码正在检查这个标志,它是如何知道运行的?由于它只是一个标志,这意味着您只是在轮询,这对于 JS 通常是不赞成的,而赞成显式事件。

标签: javascript datetime ecmascript-6 lodash


【解决方案1】:

您可以使用setInterval,它接受回调和毫秒延迟。请记住,setInterval 仅安排事件按时间间隔推送到队列中,这意味着它可能不会在那个确切的时间间隔内被调用。

let originalTime = Date.now()

let obj = {
    has30secExceeded:false
}
setInterval(()=>{
  obj.timestamp = Date.now();
  if(Date.now() > originalTime + 3000){
    obj.has30secExceeded = true;
  }
},10000);

【讨论】:

    猜你喜欢
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 2020-09-22
    • 2021-07-11
    • 2017-08-27
    • 1970-01-01
    相关资源
    最近更新 更多