I've modified this existing countdown timer so that I can run multiple countdown and used session to display the timer in HTML. The runCountdown
function now looks like this:
runCountdown(object, param, sessionName)
object
is used instead of var myCounter
of the solution. param
is for countdown seconds. sessionName
is for storing count current second to show it in the browser dynamically.
Now I want to run several countdown timer simultaneously , thus in the Meteor app I've done something like this
Meteor.call('doCount', function(error, result) {
if ( !result < 1 ) {
counters = new Array(result);
var queryResult = ProductList.find().fetch();
for (i = 0; i < counters.length; i++) {
var diff = queryResult[i].expire - Math.floor(TimeSync.serverTime() / 1000);
runCountdown(counters[i], diff, queryResult[i]._id);
}
console.log('testing from doCount ' + counters[0]);
}
});
doCount
returns the number of Countdown Timers I want to run in the browser.
Now the weird thing is that my runCountdown
function inside the for loop is working properly as I can see from the browser console, which implies that counters
variable is being used this function. Obviously my main objective is not to log the object but it's showing undefined
.
Why is that happening?
The runCountdown
function
function runCountdown(obj,param,sessionName){
obj = new Countdown({
seconds:param, // number of seconds to count down
onUpdateStatus:
function(sec){
Session.set(sessionName,sec);
console.log(Session.get(sessionName));
}, // callback for each second
onCounterEnd: function(){ alert('counter ended!');} // final action
});
obj.start();
}