Code Snippet-1
setTimeout(() => console.log("setTimeout1"));
setTimeout(() => console.log("setTimeout2"));
setImmediate(() => console.log("setImmediate1"));
setImmediate(() => console.log("setImmediate2"));
Code Snippet-2
setTimeout(() => console.log("setTimeout1"));
setTimeout(() => console.log("setTimeout2"));
setImmediate(() => console.log("setImmediate1"));
setImmediate(() => console.log("setImmediate2"));
console.log('hey');
Snippet 1's outputs, when run multiple times:
> setTimeout1, setTimeout2, setImmediate1, setImmediate2
> setImmediate1, setImmediate2, setTimeout1, setTimeout2
> setTimeout1, setImmediate1, setImmediate2, setTimeout2
Snippet 2 always returns in the following order:
> hey, setTimeout1, setTimeout2, setImmediate1, setImmediate2
I read about setImmediate()
and setTimeout()
and understood that the results might vary, but how does adding a console.log()
in Snippet-2 return the same output every time?
Node: v16.18.0