Reputation: 1808
Here I have a function that calls itself within a setTimeout
callback function:
function myFunc(){
// ... I'm doing my jobs here...
setTimeout(function(){
myFunc() //self invoke
},1)
}
myFunc(); // start point
Does this code eventually will occurs stack overflow exception?
Thanks in advance.
Upvotes: 0
Views: 38
Reputation: 370979
No. Functions queued via setTimeout
are only run once the main thread (or whatever thread is currently in progress) is complete - there are no nested calls / nested environments that could cause the overflow you're worried about. If you run this snippet, you'll never run into an error, for example:
function myFunc(i) {
if (i % 1000 === 0) console.log(i);
setTimeout(function() {
myFunc(++i)
})
}
myFunc(0);
The same sort of thing is true for functions that invoke promises that call themselves recursively via .then
- it's perfectly safe.
Upvotes: 3