I was going through some articles on event loop and tried output of the following:
console.log('print [1]');
setTimeout(() => console.log("print [2]"), 0);
setTimeout(() => console.log("print [3]"), 0);
setTimeout(() => console.log("print [4]"), 0);
console.log("print [5]");
It will output synchronous consoles or macrotask calls before picking timeout logs. It printed as usual:
print [1]
print [5]
print [2]
print [3]
print [4]
Also could understand the following as well:
console.log('print [1]');
setTimeout(() => console.log("print [2]"), 0);
setTimeout(() => console.log("print [3]"), 2); // passed 2ms as the delay
setTimeout(() => console.log("print [4]"), 0);
console.log("print [5]");
print [1]
print [5]
print [2]
print [4]
print [3]
But it got interesting when I passed 1ms as the delay to the second timeout. I was expecting it to behave the same way as passing 2ms delay but instead it behaved as if 0ms was passed.
console.log('print [1]');
setTimeout(() => console.log("print [2]"), 0);
setTimeout(() => console.log("print [3]"), 1);
setTimeout(() => console.log("print [4]"), 0);
console.log("print [5]");
print [1]
print [5]
print [2]
print [3]
print [4]
Does something specific happens because of that 1ms or is it some sort of threshold?