I have the below code where I am trying to recursively console.log
the counter with a setTimeout
. I was working on two versions, but I am getting errors for each.
In the first one I am not sure why setTimeout
does not see this.timeTest
as a function.
In second I understand that this.timeTest
is outside of scope.
Is there a way to get it into scope?
Server
const express = require('express')
const app = express()
const port = 3000
const time = require('./timeoutFun.js')
time.timeTest()
app.get('/', (req, res) => res.send('Hello World!'))
app.listen(port, () => console.log(`Example app listening on port ${port}!`))
Attempt 1
const time = {
counter: 0,
timeTest: function() {
this.counter++
console.log(this.counter)
if (this.counter < 5) {
this.timeTest()
} else if (this.counter === 10) {
console.log("done")
} else {
setTimeout(this.timeTest(), 3000);
}
}
}
module.exports = time;
Attempt 2
const time = {
counter: 0,
timeTest: function() {
this.counter++
if (this.counter < 5) {
console.log("start")
console.log(this.counter)
this.timeTest()
} else if (this.counter === 10) {
console.log("done")
} else {
setTimeout(function () {
console.log("wait")
console.log(this.counter)
this.timeTest()
}, 3000);
}
}
}
module.exports = time;