setTimeout(() => console.log('1'), 1);
setTimeout(() => console.log('4'), 0);
setTimeout(() => console.log('3'), 2);
setTimeout(() => console.log('2'), 0);
I expected the output to be 4,2,1,3 but the output is 1,4,2,3. How the first setTimeout with delay 1 is getting executed even before 0?
Because the time you used is very less once the code is executed it shows as per the flow.
setTimeout(() => console.log('1'), 2000);
setTimeout(() => console.log('4'), 0);
setTimeout(() => console.log('3'), 3000);
setTimeout(() => console.log('2'), 0);
It is because till, the line number 2 setTimeout(() => console.log('4'), 0); is loading/rendering and converting into binary, before rendering only, the 1 ms is completed, resulting in 1 ms setTimeout() working before 2 ms setTimeout()