Junior — Middle
შეგიძლიათ ახსნათ მოვლენების დამუშავების ციკლის მუშაობის პრინციპი ასინქრონულ სისტემებში?
sobes.tech AI
პასუხი AI-სგან
Node.js-ის მსგავს ასინქრონ სისტემებში, სადაც მოვლენის ციკლი (event loop) პასუხისმგებელია ასინქრონული ოპერაციების შესრულების მართვაზე, ისე რომ ძირითადი ნაკადი არ ბლოკავდეს.
მუშაობის პრინციპი:
- ყველა დროის საჭირო ოპერაცია (მაგ., ფაილის წაკითხვა, ქსელის მოთხოვნები) გადის მოვლენის რიგში.
- მოვლენის ციკლი მუდმივად ამოწმებს ამ რიგს და, როდესაც ოპერაცია დასრულდება, იძახის შესაბამის callback-ს ან handler-ს.
- ძირითადი ნაკადი არ ბლოკდება, ის აგრძელებს შემდეგ კოდის შესრულებას, სანამ დასრულებული მოვლენა არ გამოჩნდება.
ეს საშუალებას აძლევს ეფექტურად გამოიყენოს რესურსები და ერთდროულად მრავალი ოპერაცია პარალელურად, მიუხედავად Node.js-ის ერთწრიანი ბუნებისა.
მაგალითი:
console.log('დაწყება');
setTimeout(() => {
console.log('ასინქრონული მოვლენა');
}, 1000);
console.log('დასასრული');
გამომავალი იქნება:
დაწყება
დასასრული
ასინქრონული მოვლენა
რადგან setTimeout სვამს ფუნქციას მოვლენის რიგში, ხოლო მოვლენის ციკლი მას მოგვიანებით გამოიძახებს.