Search code examples
node.jsexpressvariables

Variable is undefined outside of the function


Can someone please help me out with this? I'm getting an error 'count is not defined' when executing the below code. I'm trying to create a countdown clock in node.js. If I log the timer variable inside the function it works but outside of the function, it is undefined.

const getOrder = async(request, response) => {
const data = await knex("orderbook_table").select()
const time_data = await knex("orderbook_table").select("timestamp")

console.log(time_data)

var timer;

setInterval(function count() {

    for (var i = 0; i < time_data.length; i++) {
        //console.log(tableRows[i]);
        var entryDate = time_data[i].timestamp;
        const second = 1000,
            minute = second * 60,
            hour = minute * 60,
            day = hour * 24;

        countDown = new Date(entryDate).getTime();

        let now = new Date().getTime();
        distance = countDown - now;

        days = Math.floor(distance / (day));
        hours = Math.floor((distance % (day)) / (hour));
        minutes = Math.floor((distance % (hour)) / (minute));
        seconds = Math.floor((distance % (minute)) / second);

        timer = days + "d:" + hours + "h:" + minutes + "m:" + seconds + "s";

        //console.log(timer);
    }
}, 1000);

var orderStr = data;

count();
console.log(timer);

response.send({ orderStr });
//refresh()

Solution

  • The count function is defined and scoped under the setTimer, you should create the function as callback outside of setInterval then call within that setInterval the created function

    You can give a look to this previously answered thread or to the documentation