gpt4 book ai didi

javascript - 如何使用 meteor 定期更新变量

转载 作者:数据小太阳 更新时间:2023-10-29 05:01:12 26 4
gpt4 key购买 nike

我有一个 session 变量,我想以固定的周期更新它。比如说,我希望这个变量每 60 秒增加 1。

在我看来,执行此操作的最佳位置是在相关模板的助手部分内。我首先尝试使用 setInterval 来执行此操作,如 here 所述,但这没有用(该功能似乎没有重复)。

然后我尝试了我认为是一个简单的解决方案,但这也行不通。见下文。辅助变量“currentPosition”应该返回当天的当前分钟(加上偏移量)。但是,它仅在首次调用模板时以及在“事件”部分定义的函数中更改 session 变量“偏移量”时执行此操作,该函数响应对特定 div 的单击(“下一步”按钮) .

    currentPosition: function () {
var d = new Date();
var h = d.getHours();
var m = d.getMinutes();
var w = h * 60 + m;

Session.set("position", w + Session.get("offset"));

return Session.get("position");
},

我认为上述助手会每分钟主动更新“currentPosition”的值。然而事实并非如此。

所以,我的问题是,当 session 变量是调整。

(如果有一个直接且完全不同的解决方案适用于 meteor,我不知道它,所以如果我遗漏了一些明显的东西,请向我指出。)

最佳答案

虽然您使用的是 react 变量,但它只会设置一次 - 当第一次调用助手时。因此它不会再次运行。您需要帮助器的外部 函数来为您设置变量。请记住一条重要规则 - 帮助者永远不要拥有side effects .

这是一个关于如何创建计时器的完整工作示例:

html

<body>
{{> timer}}
</body>

<template name="timer">
<p>Total Seconds: {{seconds}}</p>
</template>

js

Template.timer.helpers({
seconds: function() {
return Template.instance().seconds.get();
}
});

Template.timer.created = function() {
var self = this;
this.seconds = new ReactiveVar(0);

this.handle = Meteor.setInterval((function() {
self.seconds.set(self.seconds.get() + 1);
}), 1000);
};

Template.timer.destroyed = function() {
Meteor.clearInterval(this.handle);
};

关于javascript - 如何使用 meteor 定期更新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27412743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com