Javascript 如何强制重新计算未更改的参数? 我问题的背景

Javascript 如何强制重新计算未更改的参数? 我问题的背景,javascript,vue.js,Javascript,Vue.js,我每天通过MQTT收到一次(比如说,在01:15)当天的两个时间戳:事件的开始和结束(这是一个家庭仪表盘,令人乏味的现实是,这是我的孩子在给定的一天上学的时间) 我今天在仪表板上显示的是9:00→ 17:10。当接收到新的MQTT消息并且start和end发生更改时,此信息将更新 这很有效 我现在想添加一个额外的信息,以显示 9:00→ 17:10(27分钟后) 27分钟内的部分是从现在到学校一天结束的时间(17:10)。我知道如何计算和显示它(包括只有当“现在”在开始和结束之间时它才可见)

我每天通过MQTT收到一次(比如说,在01:15)当天的两个时间戳:事件的开始和结束(这是一个家庭仪表盘,令人乏味的现实是,这是我的孩子在给定的一天上学的时间)

我今天在仪表板上显示的是
9:00→ 17:10
。当接收到新的MQTT消息并且
start
end
发生更改时,此信息将更新

这很有效

我现在想添加一个额外的信息,以显示

9:00→ 17:10(27分钟后)

27分钟内的
部分是从现在到学校一天结束的时间(
17:10
)。我知道如何计算和显示它(包括只有当“现在”在开始和结束之间时它才可见)

这是通过以下构造实现的:

{{ extractTime(enfant.start) }} → {{ extractTime(enfant.end) }} <span v-if="dansCreneau(enfant.start, enfant.end)">({{dansTime(enfant.end)}})</span>
{{extractTime(enfant.start)}→ {{extractTime(enfant.end)}}({{dansTime(enfant.end)}})
  • extractTime
    获取ISO日期并输出24小时时间
  • dansCreneau
    如果“现在”在两个日期之间,则返回一个
    true
    ,否则返回
    false
  • dansTime
    以人性化的方式返回从现在到学校一天结束的时间
我的问题 我知道如何将其显示一次,但是从Vue的角度来看,括号之间的内容只有一次计算,没有什么需要重新计算,因为没有任何变化

我可以通过
setInterval(XXX,55000)运行(某物)的连续更新enfant=enfant
,但这不会改变
enfant
的值,因此不会触发重新计算


强制重新计算并因此更新剩余时间的正确方法是什么?

只需将
立即存储在组件数据中,并创建计算属性,该属性将计算与存储的
立即
儿童的时间差。结束

setInterval
中立即更新

请参见这个简单的时钟示例:

newvue({
el:“#应用程序”,
数据:{
现在:新日期(),
计时器:空
},
计算:{
时间:函数(){
返回这个.now.toLocaleTimeString();
}
},
挂载:函数(){
让自我=这个;
this.timer=setInterval(函数(){
self.now=新日期()
}, 1000)
},
beforeDestroy:function(){
clearInterval(这个.timer)
}
})

{{time}}