Sobes.tech
Middle

რა არის მიკრო და მიკრო დავალებები?

sobes.tech AI

პასუხი AI-სგან

მიკროზადანებები — ეს არის ბრაუზერის სამუშაოს მაღალი დონის დიდი ეტაპები, როგორიცაა HTML-ის ანალიზი, DOM-ის შექმნა, CSSOM-ის შექმნა, სტილების გამოთვლა, რენდერინგის ხე-ის შექმნა, Layout, Paint და Composition. ისინი ქმნიან ძირითად რენდერინგის კონვეიერს.

მიკროზადანებები — ეს არის უფრო პატარა, დეტალიზებული მოქმედებები, რომლებიც შესრულდება მიმდინარე მიკროზადანების დასრულების შემდეგ და შემდეგი დაწყების წინ. მათში შედის პრომისების დამუშავება (Promise), MutationObserver, queueMicrotask.

ძირითადი განსხვავება ის არის, რომ მიკროზადანებები ყოველთვის შესრულდება მხოლოდ მიმდინარე მიკროზადანების შემდეგ, ხოლო შემდეგი მიკროზადანება (მაგალითად, შემდეგი რენდერინგის ფრეიმი ან setTimeout-ის მოვლენის დამუშავება) შესრულდება მხოლოდ მაშინ, როდესაც მიკროზადანების რიგი იქნება ცარიელი.

შესრულების წესია მაგალითით:

// მიკროზადანება (საწყისი კოდი)
console.log('დაწყება');

// მიკროზადანება (ტაიმერი)
setTimeout(() => {
  console.log('ტაიმერი');
}, 0);

// მიკროზადანება (პრომისი)
Promise.resolve().then(() => {
  console.log('პრომისი');
});

// მიკროზადანება (საწყისი კოდის დასასრული)
console.log('დასასრული');

კონსოლში გამოსავალი:

დაწყება
დასასრული
პრომისი
ტაიმერი

შესრულების წესია:

  1. იწყება მთავარი მიკროზადანება (ძირითადი სკრიპტი).
  2. console.log('დაწყება').
  3. setTimeout სვამს მიკროზადანების რიგში.
  4. Promise.resolve().then() სვამს მიკროზადანების რიგში.
  5. console.log('დასასრული').
  6. მთავარი მიკროზადანება დასრულდა.
  7. მიკროზადანების რიგი შემოწმდება და შესრულდება Promise.resolve().then().
  8. console.log('პრომისი').
  9. მიკროზადანების რიგი ცარიელია.
  10. ბრაუზერი აგრძელებს მოვლენების ციკლს და გადადის შემდეგი მიკროზადანების რიგზე.
  11. setTimeout მიკროზადანება შესრულდება.
  12. console.log('ტაიმერი').
  13. მიკროზადანება დასრულდა.

ეს გაგება მნიშვნელოვანია ასინქრონული ოპერაციების წესრიგის მართვის და Event Loop-ის მუშაობის გასაგებად.