Здравствуйте, прочитал несколько статей про цикл событий и узнал про макрозадачи и микрозадачи. Основную концепцию понял, что на каждой итерации цикл событий выполняет одну макрозадачу и потом все микрозадачи. В
этой статье было написано, что макрозадачи - это setTimeout, setInterval и setImmediate, а микрозадачи - это Promise, MutationObserver и process.nextTick. В примере был приведен следующий код:
console.log('script start');
setTimeout(() => console.log('setTimeout'), 0);
Promise.resolve()
.then(() => console.log('promise1'))
.then(() => console.log('promise2'));
console.log('script end');
// script start
// script end
// promise1
// promise2
// setTimeout
К я сам понял Promise`ы выполняются до setTimeout, так как они выполняются после макрозадачи, а первой макрозадачей является вызов скрипта. Что на самом деле является макрозадачей, кроме setTimeout, setInterval и setImmediate?