Ի՞նչ են մակրո և միկրո առաջադրանքները։
sobes.tech AI
Պատասխան AI-ից
Մակրազատումները մեծ, բարձր մակարդակի փուլեր են բրաուզերի աշխատանքի, ինչպիսիք են HTML-ի վերլուծությունը, DOM-ի կառուցումը, CSSOM-ի կառուցումը, ոճերի հաշվարկը, ռենդերային ծառի կառուցումը, դասավորությունը (Layout), ներկումը (Paint) և կոմպոզիցիան (Composite): Դրանք ձևավորում են հիմնական ռենդերային գիծը:
Միկրոզատումները փոքր, ավելի մանրամասն գործողություններ են, որոնք կատարվում են ընթացիկ մակրազատումը ավարտելուց հետո և հաջորդը սկսելուց առաջ: Դրանց են պատկանում խոստումների (Promise), MutationObserver, queueMicrotask մշակումը:
Հիմնական տարբերությունը այն է, որ միկրոզատումները միշտ ** անմիջապես** կատարվում են ընթացիկ մակրազատումից հետո, մինչդեռ հաջորդ մակրազատումը (օրինակ, հաջորդ ռենդերային շրջանակը կամ setTimeout ժամկետային իրադարձությունը) կատարվում է միայն այն ժամանակ, երբ միկրոզատումների հերթը դատարկ է:
Կատարման օրինակային կարգը՝
// Մակրազատում (սկզբնական կոդ)
console.log('Սկիզբ');
// Մակրազատում (ժամկետ)
setTimeout(() => {
console.log('Ժամկետ');
}, 0);
// Միկրոզատում (խոստում)
Promise.resolve().then(() => {
console.log('Խոստում');
});
// Մակրազատում (վերջին սկզբնական կոդ)
console.log('Ավարտ');
Կոնսոլում արտածում՝
Սկիզբ
Ավարտ
Խոստում
Ժամկետ
Կատարման կարգը՝
- Կատարվում է սկզբնական մակրազատումը (հիմնական սցենարը):
console.log('Սկիզբ'):setTimeoutտեղադրում է մակրազատումը հերթում:Promise.resolve().then()տեղադրում է միկրոզատումը հերթում:console.log('Ավարտ'):- Հիմնական մակրազատումը ավարտվում է:
- Միկրոզատումների հերթը ստուգվում է՝ կատարվում է
Promise.resolve().then(): console.log('Խոստում'):- Միկրոզատումների հերթը դատարկ է:
- Բրաուզերը մշակում է իրադարձությունների ցիկլում՝ անցում կատարելով հաջորդ մակրազատմանը:
- Կատարվում է
setTimeoutմակրազատումը: console.log('Ժամկետ'):- Մակրազատումը ավարտվում է:
Այս հասկացողությունը կարևոր է ասինխրոն օպերացիաների կատարման կարգը կառավարելու և Event Loop-ի աշխատանքը հասկանալու համար: