Variable inside setTimeout says it is undefined, but when outside it is defined [duplicate]
The reason for this is that the callback function inside setTimeout is in a different lexical environment. This is why in ES6+ functions can be defined using =>
. This is so that the code within a function shares the same scope as the function.
To fix this, you can either use ES6+ syntax, where instead of function(a,b,args){...}
you would use (a,b,args) => {...}
:
setTimeout(() => {
this.http.post(...);
});
or with ES5 syntax:
var root = this;
setTimeout(function(){
root.http.post(...);
});
Hope this helps!