I want to trigger 2 functions with a unique timeOut.
The following works fine
setTimeout(function() {
function1(); // runs first
function2(); // runs second
}, 1000)
But in my case, I have a class method and an callback (arrow function).
It looks like this (minimalized):
class Timer {
constructor(callback) {
this.active = false;
this.callback = callback;
}
cancel() {
this.active = false;
}
set() {
this.active = true;
this.timeOut = setTimeout( function() {
this.cancel();
this.callback; // HERE is my problem. doesn't run, not casted as a function
}, 1000)
}
I get the following error Expected an assignment or function call and instead saw an expression.
Any trick to fix that?
You are not calling callback function, you can also add type check before calling.
set() {
this.active = true;
this.timeOut = setTimeout(() => {
this.cancel();
typeof this.callback === 'function' && this.callback();
}, 1000)
}