MS - микро задачи
MC - макро задачи
function test(num) {
console.log(`#${num}`);
}
Promise.resolve().then(setTimeout(() => test(4) /* MS1 */, 1000) /* MC5 */); // MC1
setTimeout(() => test(1) /* MS2 */,1000); // MC2
setTimeout(() => test(2) /* MS3 */,0); // MC3
setTimeout(() => test(3) /* MS4 */,2000); // MC4
const p = new Promise(
(resolve) => {
setTimeout(() => resolve() /* MS6 */, 1000); // MC7
} // MS5
); // MC6
p.then(() => test(5) /* MS7 */);
/* Queue
MC5 => MS1
MC1 => MC5
MC2 => MS2
MC3 => MS3
MC4 => MS4
MC6 => MS5 => MC7
MC7 => MS6 => MS7
result:
#2
#4
#1
#5
#3
*/
И ещё, конкретно в этом участке.
Promise.resolve() - это микро задача, порождающая микро задачу, порождающая макро задачу, которая порождает микро задачу или =>
Promise.resolve() - это макро задача, порождающая микро задачу, порождающая макро задачу, которая порождает микро задачу?
Promise.resolve().then(setTimeout(() => test(4) /* MS1 */, 1000) /* MC5 */); // MC1