javascript meteor setinterval

javascript - Cómo actualizar periódicamente una variable usando meteorito



setinterval (1)

Aunque está utilizando una variable reactiva, solo se establece una vez, cuando se llama por primera vez al ayudante. Por lo tanto, no se ejecuta de nuevo. Necesita una función fuera del asistente para establecer la variable para usted. Recuerde una regla importante: los ayudantes nunca deben tener efectos secundarios .

Aquí hay un ejemplo completo de cómo crear un temporizador:

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); };

Tengo una variable de sesión que deseo actualizar con una periodicidad fija. Diga, quiero que esta variable se incremente en 1 cada 60 segundos.

Me parece que el mejor lugar para hacerlo es dentro de la sección de ayudantes de la plantilla correspondiente. Primero traté de hacer esto usando setInterval como se describe aquí , pero eso no funcionó (la función simplemente no parecía repetirse).

Luego intenté lo que pensé sería una solución directa, pero esto tampoco funciona. Vea abajo. Se supone que la variable de ayuda ''currentPosition'' devuelve el minuto actual del día (más un desplazamiento). Sin embargo, solo lo hace cuando se llama por primera vez a la plantilla y cuando la variable de sesión ''offset'' se cambia en una función definida en la sección ''events'', que responde a un clic en un div (un botón ''next'') .

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"); },

Creo que el ayudante anterior actualizaría activamente el valor de ''currentPosition'' cada minuto. Sin embargo, no es así.

Entonces, mi pregunta es, ¿cómo puedo cambiar una variable de sesión cada, digamos, 60 segundos, incrementándola, digamos, 1, mientras que el nuevo valor de la variable de sesión se refleja dentro de la aplicación cuando se ajusta la variable?

(Si hay una solución directa y completamente diferente que funciona en meteoritos, no estoy al tanto, así que házmelo saber si me falta algo obvio).