{"id":6776,"date":"2026-08-01T11:00:43","date_gmt":"2026-08-01T07:30:43","guid":{"rendered":"https:\/\/parmin.cloud\/blog\/?p=6776"},"modified":"2026-08-01T11:00:43","modified_gmt":"2026-08-01T07:30:43","slug":"%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-event-emitter%d9%87%d8%a7-%d8%af%d8%b1-node-js","status":"publish","type":"post","link":"https:\/\/parmin.cloud\/blog\/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-event-emitter%d9%87%d8%a7-%d8%af%d8%b1-node-js\/","title":{"rendered":"\u0622\u0645\u0648\u0632\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Event Emitter\u200c\u0647\u0627 \u062f\u0631 Node.js"},"content":{"rendered":"<p class=\"svelte-4sys19\" dir=\"auto\"><strong>\u0645\u0642\u062f\u0645\u0647<\/strong> \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 (Events) \u062f\u0631 Node.js \u062a\u0648\u0633\u0637 \u0622\u0628\u062c\u06a9\u062a\u200c\u0647\u0627\u06cc\u06cc \u0628\u0647 \u0646\u0627\u0645 Event Emitter (\u0633\u0627\u0637\u0639\u200c\u06a9\u0646\u0646\u062f\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f) \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u06a9\u0647 \u0628\u0627 \u0627\u0631\u0633\u0627\u0644 \u06cc\u06a9 \u067e\u06cc\u0627\u0645\u060c \u0648\u0642\u0648\u0639 \u06cc\u06a9 \u0639\u0645\u0644\u06cc\u0627\u062a \u0631\u0627 \u0639\u0644\u0627\u0645\u062a\u200c\u06af\u0630\u0627\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u062c\u0627\u0648\u0627\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u06a9\u062f\u06cc \u0628\u0646\u0648\u06cc\u0633\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u06cc\u06a9 Event Emitter \u06af\u0648\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f (Listen)\u060c \u06a9\u0647 \u0627\u06cc\u0646 \u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0647\u0631 \u0628\u0627\u0631 \u0627\u06cc\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0631\u062e \u062f\u0627\u062f\u0646\u062f\u060c \u062a\u0648\u0627\u0628\u0639 \u062e\u0627\u0635\u06cc \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0632\u0645\u06cc\u0646\u0647\u060c \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0627\u0632 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc\u200c\u06a9\u0646\u0646\u062f\u0647 (Identifying String) \u0648 \u0647\u0631 \u062f\u0627\u062f\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0634\u0646\u0648\u0646\u062f\u06af\u0627\u0646 (Listeners) \u0627\u0631\u0633\u0627\u0644 \u0634\u0648\u062f\u060c \u062a\u0634\u06a9\u06cc\u0644 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062f\u0631 Node.js\u060c \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0639\u0645\u0644\u06cc \u067e\u0633 \u0627\u0632 \u062a\u06a9\u0645\u06cc\u0644 \u0639\u0645\u0644\u06cc \u062f\u06cc\u06af\u0631 \u0627\u0646\u062c\u0627\u0645 \u0634\u0648\u062f\u060c \u0627\u0632 \u062a\u06a9\u0646\u06cc\u06a9\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc \u0646\u0627\u0647\u0645\u06af\u0627\u0645 (Asynchronous) \u0645\u0627\u0646\u0646\u062f \u062a\u0648\u0627\u0628\u0639 Callback \u062a\u0648 \u062f\u0631 \u062a\u0648 \u06cc\u0627 \u0632\u0646\u062c\u06cc\u0631\u0647\u200c\u0627\u06cc \u06a9\u0631\u062f\u0646 Promise\u200c\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0627\u06cc\u0646 \u062a\u06a9\u0646\u06cc\u06a9\u200c\u0647\u0627 \u0639\u0645\u0644\u06cc\u0627\u062a \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632 \u0648 \u0639\u0645\u0644\u06cc\u0627\u062a \u0646\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0647 \u0634\u062f\u062a \u0628\u0647 \u0647\u0645 \u0645\u062a\u0635\u0644 (Couple) \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u060c \u06a9\u0647 \u0627\u0635\u0644\u0627\u062d \u0639\u0645\u0644\u06cc\u0627\u062a \u0646\u0647\u0627\u06cc\u06cc \u0631\u0627 \u062f\u0631 \u0622\u06cc\u0646\u062f\u0647 \u062f\u0634\u0648\u0627\u0631 \u0645\u06cc\u200c\u0633\u0627\u0632\u062f. Event Emitter\u200c\u0647\u0627 \u0631\u0627\u0647 \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0627\u0631\u0628\u0646\u062f\u06cc \u0627\u06cc\u0646 \u0631\u0627\u0628\u0637\u0647 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f: \u0627\u0644\u06af\u0648\u06cc \u0627\u0646\u062a\u0634\u0627\u0631-\u0627\u0634\u062a\u0631\u0627\u06a9 (Publish-Subscribe). \u062f\u0631 \u0627\u06cc\u0646 \u0627\u0644\u06af\u0648\u06cc \u0645\u0639\u0645\u0627\u0631\u06cc \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631\u060c \u06cc\u06a9 \u0646\u0627\u0634\u0631 (Publisher &#8211; \u0647\u0645\u0627\u0646 Event Emitter) \u067e\u06cc\u0627\u0645\u06cc (\u0631\u0648\u06cc\u062f\u0627\u062f\u06cc) \u0631\u0627 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u06cc\u06a9 \u0645\u0634\u062a\u0631\u06a9 (Subscriber) \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u0647 \u0648 \u0639\u0645\u0644\u06cc \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0642\u062f\u0631\u062a \u0627\u06cc\u0646 \u0627\u0644\u06af\u0648 \u062f\u0631 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0646\u0627\u0634\u062f \u0646\u06cc\u0627\u0632\u06cc \u0646\u062f\u0627\u0631\u062f \u0627\u0632 \u0645\u0634\u062a\u0631\u06a9\u200c\u0647\u0627 \u0627\u0637\u0644\u0627\u0639 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f. \u0646\u0627\u0634\u0631 \u067e\u06cc\u0627\u0645 \u0631\u0627 \u0645\u0646\u062a\u0634\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0648\u0627\u06a9\u0646\u0634 \u0628\u0647 \u0622\u0646 \u0628\u0647 \u0639\u0647\u062f\u0647 \u0645\u0634\u062a\u0631\u06a9\u200c\u0647\u0627\u0633\u062a. \u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u0647\u06cc\u0645 \u0631\u0641\u062a\u0627\u0631 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u062e\u0648\u062f \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u0645\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0646\u062d\u0648\u0647 \u0648\u0627\u06a9\u0646\u0634 \u0645\u0634\u062a\u0631\u06a9\u200c\u0647\u0627 \u0631\u0627 \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u0646\u0627\u0634\u062f \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u0645.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0645\u0627 \u06cc\u06a9 Event Listener (\u0634\u0646\u0648\u0646\u062f\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f) \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u062c\u0627\u0648\u0627\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u06cc \u0628\u0647 \u0646\u0627\u0645 <code class=\"cursor-pointer codespan\">TicketManager<\/code> \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0627\u062c\u0627\u0632\u0647 \u062e\u0631\u06cc\u062f \u0628\u0644\u06cc\u0637 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0645\u0627 \u0634\u0646\u0648\u0646\u062f\u0647\u200c\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f <code class=\"cursor-pointer codespan\">buy<\/code> \u062a\u0646\u0638\u06cc\u0645 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u06a9\u0647 \u0647\u0631 \u0628\u0627\u0631 \u06cc\u06a9 \u0628\u0644\u06cc\u0637 \u062e\u0631\u06cc\u062f\u0627\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0641\u0639\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u0627\u06cc\u0646 \u0641\u0631\u0622\u06cc\u0646\u062f \u0647\u0645\u0686\u0646\u06cc\u0646 \u0646\u062d\u0648\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u062e\u0637\u0627 \u0627\u0632 \u0633\u0645\u062a Emitter \u0648 \u0646\u062d\u0648\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u0634\u062a\u0631\u06a9\u200c\u0647\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627 \u0646\u06cc\u0632 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\"><strong>\u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627<\/strong><\/p>\n<ul dir=\"auto\">\n<li class=\"text-start\" style=\"text-align: right;\">Node.js \u0631\u0648\u06cc \u0645\u0627\u0634\u06cc\u0646 \u062a\u0648\u0633\u0639\u0647 \u0634\u0645\u0627 \u0646\u0635\u0628 \u0628\u0627\u0634\u062f. \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0628\u0627 Node.js \u0646\u0633\u062e\u0647 20 \u062a\u0633\u062a \u0634\u062f\u0647 \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u0646\u0635\u0628 \u0622\u0646 \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 24.04\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0631\u0633\u0645\u06cc \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f (Parmin Cloud) \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<li class=\"text-start\" style=\"text-align: right;\">\u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc \u062c\u0627\u0648\u0627\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a (ES6).<\/li>\n<\/ul>\n<div><\/div>\n<hr class=\"border-[#EBEBEB] dark:border-[#EBEBEB]\/16\" \/>\n<h3 class=\"svelte-4sys19\" dir=\"auto\">\u0645\u0631\u062d\u0644\u0647 \u06f1 \u2014 \u0633\u0627\u0637\u0639 \u06a9\u0631\u062f\u0646 (Emitting) \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627<\/h3>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u062f\u0648 \u0631\u0648\u0634 \u0631\u0627\u06cc\u062c \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 Event Emitter \u062f\u0631 Node.js \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0627\u0648\u0644\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0627\u0632 \u0622\u0628\u062c\u06a9\u062a Event Emitter \u0627\u0633\u062a \u0648 \u062f\u0648\u0645\u06cc \u0627\u06cc\u062c\u0627\u062f \u0622\u0628\u062c\u06a9\u062a\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 Event Emitter \u0627\u0631\u062b\u200c\u0628\u0631\u06cc (Extend) \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062a\u0635\u0645\u06cc\u0645\u200c\u06af\u06cc\u0631\u06cc \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0648 \u0631\u0648\u0634 \u0628\u0633\u062a\u06af\u06cc \u0628\u0647 \u0645\u06cc\u0632\u0627\u0646 \u0627\u062a\u0635\u0627\u0644 (Coupling) \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u0634\u0645\u0627 \u0628\u0647 \u0639\u0645\u0644\u06cc\u0627\u062a \u0622\u0628\u062c\u06a9\u062a\u200c\u0647\u0627\u06cc\u062a\u0627\u0646 \u062f\u0627\u0631\u062f. \u0627\u06af\u0631 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0633\u0627\u0637\u0639 \u06a9\u0646\u06cc\u062f \u0646\u062a\u06cc\u062c\u0647 \u0627\u0639\u0645\u0627\u0644 \u06cc\u06a9 \u0622\u0628\u062c\u06a9\u062a \u0647\u0633\u062a\u0646\u062f\u060c \u0627\u062d\u062a\u0645\u0627\u0644\u0627\u064b \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0627\u0632 \u06a9\u0644\u0627\u0633 Event Emitter \u0627\u0631\u062b\u200c\u0628\u0631\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0631\u0627\u06cc \u0631\u0627\u062d\u062a\u06cc \u06a9\u0627\u0631 \u0628\u0647 \u062a\u0648\u0627\u0628\u0639 \u0622\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f. \u0627\u06af\u0631 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0645\u0633\u062a\u0642\u0644 \u0627\u0632 \u0622\u0628\u062c\u06a9\u062a\u200c\u0647\u0627\u06cc \u06a9\u0633\u0628\u200c\u0648\u06a9\u0627\u0631 \u0634\u0645\u0627 \u0647\u0633\u062a\u0646\u062f\u060c \u06cc\u06a9 \u0622\u0628\u062c\u06a9\u062a \u0645\u0633\u062a\u0642\u0644 Event Emitter \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062a\u0648\u0633\u0637 \u0622\u0628\u062c\u06a9\u062a\u200c\u0647\u0627\u06cc \u0634\u0645\u0627 \u0627\u0631\u062c\u0627\u0639 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u06a9\u062f\u0647\u0627\u06cc \u062e\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062e\u0648\u062f\u060c \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u062c\u062f\u06cc\u062f \u0628\u0647 \u0646\u0627\u0645 <code class=\"cursor-pointer codespan\">event-emitters<\/code> \u0628\u0633\u0627\u0632\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1104\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037ce8 \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">mkdir event-emitters<\/div>\n<div class=\"cm-line\">cd event-emitters<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-19\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u0648\u0644\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0628\u0627 \u0646\u0627\u0645 <code class=\"cursor-pointer codespan\">firstEventEmitter.js<\/code> \u062f\u0631 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u0645\u062a\u0646 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1106\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037ce9 \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">nano firstEventEmitter.js<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-23\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062f\u0631 Node.js\u060c \u0645\u0627 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u06a9\u0644\u0627\u0633 <code class=\"cursor-pointer codespan\">EventEmitter<\/code> \u0633\u0627\u0637\u0639 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0628\u062e\u0634\u06cc \u0627\u0632 \u0645\u0627\u0698\u0648\u0644 <code class=\"cursor-pointer codespan\">events<\/code> \u0627\u0633\u062a. \u0627\u0628\u062a\u062f\u0627 \u0627\u06cc\u0646 \u0645\u0627\u0698\u0648\u0644 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">javascript<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1108\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-javascript rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cea \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">const { EventEmitter } = require(&#8220;events&#8221;);<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">const firstEmitter = new EventEmitter();<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-27\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062d\u0627\u0644\u0627 \u0628\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u062e\u0637 \u0632\u06cc\u0631\u060c \u06cc\u06a9 \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627 \u0633\u0627\u0637\u0639 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">javascript<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1110\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-javascript rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037ceb \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">firstEmitter.emit(&#8220;My first event&#8221;);<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-31\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062a\u0627\u0628\u0639 <code class=\"cursor-pointer codespan\">emit()<\/code> \u0628\u0631\u0627\u06cc \u0634\u0644\u06cc\u06a9 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0645\u0627 \u0628\u0627\u06cc\u062f \u0646\u0627\u0645 \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u0628\u0647 \u0622\u0646 \u067e\u0627\u0633 \u062f\u0647\u06cc\u0645. \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0647\u0631 \u062a\u0639\u062f\u0627\u062f \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0631\u0627 \u0628\u0639\u062f \u0627\u0632 \u0646\u0627\u0645 \u0631\u0648\u06cc\u062f\u0627\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645. \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0641\u0642\u0637 \u0646\u0627\u0645 \u062f\u0627\u0631\u0646\u062f \u0645\u062d\u062f\u0648\u062f \u0647\u0633\u062a\u0646\u062f\u061b \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u200c\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0628\u0647 \u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0647 \u0634\u0646\u0648\u0646\u062f\u06af\u0627\u0646 \u0628\u0641\u0631\u0633\u062a\u06cc\u0645.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 <code class=\"cursor-pointer codespan\">node<\/code> \u0622\u0646 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1112\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cec \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">node firstEventEmitter.js<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-37\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u062c\u0631\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u062a\u0645\u0627\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0647\u06cc\u0686 \u062e\u0631\u0648\u062c\u06cc \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u0646\u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u06cc\u062f. \u0632\u06cc\u0631\u0627 \u0645\u0627 \u0647\u06cc\u0686 \u067e\u06cc\u0627\u0645\u06cc \u0631\u0627 \u0644\u0627\u06af \u0646\u06a9\u0631\u062f\u06cc\u0645 \u0648 \u0686\u06cc\u0632\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f \u06a9\u0647 \u0628\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647 \u06af\u0648\u0634 \u062f\u0647\u062f. \u0631\u0648\u06cc\u062f\u0627\u062f \u0633\u0627\u0637\u0639 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0647\u06cc\u0686 \u0686\u06cc\u0632 \u0628\u0647 \u0622\u0646 \u0648\u0627\u06a9\u0646\u0634 \u0646\u0634\u0627\u0646 \u0646\u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062d\u0627\u0644\u0627 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u06cc\u06a9 \u0645\u062b\u0627\u0644 \u06a9\u0627\u0645\u0644\u200c\u062a\u0631 \u0627\u0632 \u0627\u0646\u062a\u0634\u0627\u0631\u060c \u0634\u0646\u0648\u062f \u0648 \u0648\u0627\u06a9\u0646\u0634 \u0628\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0628\u0633\u0627\u0632\u06cc\u0645. \u0645\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0627 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0646\u0645\u0648\u0646\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0644\u06cc\u0637 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645. \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0644\u06cc\u0637 \u062a\u0627\u0628\u0639\u06cc \u0628\u0631\u0627\u06cc \u062e\u0631\u06cc\u062f \u0628\u0644\u06cc\u0637 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0648\u0642\u062a\u06cc \u0628\u0644\u06cc\u0637\u06cc \u062e\u0631\u06cc\u062f\u0627\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0631\u0648\u06cc\u062f\u0627\u062f\u06cc \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u062c\u0632\u0626\u06cc\u0627\u062a \u062e\u0631\u06cc\u062f\u0627\u0631 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f\u06cc \u0628\u0647 \u0646\u0627\u0645 <code class=\"cursor-pointer codespan\">ticketManager.js<\/code> \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1114\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037ced \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">nano ticketManager.js<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-45\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0645\u0627\u0646\u0646\u062f \u0645\u062b\u0627\u0644 \u0642\u0628\u0644\u060c \u0628\u0627\u06cc\u062f \u06a9\u0644\u0627\u0633 <code class=\"cursor-pointer codespan\">EventEmitter<\/code> \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u0645:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">javascript<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1116\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-javascript rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cee \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">const EventEmitter = require(&#8220;events&#8221;);<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">class TicketManager extends EventEmitter {}<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-49\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627\u060c \u06a9\u0644\u0627\u0633 <code class=\"cursor-pointer codespan\">TicketManager<\/code> \u0627\u0632 \u06a9\u0644\u0627\u0633 <code class=\"cursor-pointer codespan\">EventEmitter<\/code> \u0627\u0631\u062b\u200c\u0628\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u06cc\u0639\u0646\u06cc \u06a9\u0644\u0627\u0633 <code class=\"cursor-pointer codespan\">TicketManager<\/code> \u0645\u062a\u062f\u0647\u0627 \u0648 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc <code class=\"cursor-pointer codespan\">EventEmitter<\/code> \u0631\u0627 \u0628\u0647 \u0627\u0631\u062b \u0645\u06cc\u200c\u0628\u0631\u062f \u0648 \u0628\u0647 \u0645\u062a\u062f <code class=\"cursor-pointer codespan\">emit()<\/code> \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0645\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u062a\u0639\u062f\u0627\u062f \u0628\u0644\u06cc\u0637\u200c\u0647\u0627\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0631\u0627 \u062f\u0631 \u0633\u0627\u0632\u0646\u062f\u0647 (Constructor) \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">javascript<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1118\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-javascript rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cef \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">const EventEmitter = require(&#8220;events&#8221;);<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">class TicketManager extends EventEmitter {<\/div>\n<div class=\"cm-line\">constructor(supply) {<\/div>\n<div class=\"cm-line\">super();<\/div>\n<div class=\"cm-line\">this.supply = supply;<\/div>\n<div class=\"cm-line\">}<\/div>\n<div class=\"cm-line\">}<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-55\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0633\u0627\u0632\u0646\u062f\u0647 \u06cc\u06a9 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 <code class=\"cursor-pointer codespan\">supply<\/code> (\u0645\u0648\u062c\u0648\u062f\u06cc) \u062f\u0627\u0631\u062f. \u062d\u062a\u06cc \u0627\u06af\u0631 \u0627\u0639\u0644\u0627\u0645 \u06a9\u0631\u062f\u06cc\u0645 <code class=\"cursor-pointer codespan\">TicketManager<\/code> \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0641\u0631\u0632\u0646\u062f <code class=\"cursor-pointer codespan\">EventEmitter<\/code> \u0627\u0633\u062a\u060c \u0647\u0646\u0648\u0632 \u0628\u0627\u06cc\u062f <code class=\"cursor-pointer codespan\">super()<\/code> \u0631\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u0647 \u0645\u062a\u062f\u0647\u0627 \u0648 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc <code class=\"cursor-pointer codespan\">EventEmitter<\/code> \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062d\u0627\u0644\u0627 \u0645\u062a\u062f <code class=\"cursor-pointer codespan\">buy()<\/code> \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">javascript<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1120\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-javascript rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037ceg \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">const EventEmitter = require(&#8220;events&#8221;);<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">class TicketManager extends EventEmitter {<\/div>\n<div class=\"cm-line\">constructor(supply) {<\/div>\n<div class=\"cm-line\">super();<\/div>\n<div class=\"cm-line\">this.supply = supply;<\/div>\n<div class=\"cm-line\">}<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">buy(email, price) {<\/div>\n<div class=\"cm-line\">this.supply&#8211;;<\/div>\n<div class=\"cm-line\">this.emit(&#8220;buy&#8221;, email, price, Date.now());<\/div>\n<div class=\"cm-line\">}<\/div>\n<div class=\"cm-line\">}<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">module.exports = TicketManager<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-61\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062f\u0631 \u0645\u062a\u062f <code class=\"cursor-pointer codespan\">buy()<\/code>\u060c \u0627\u06cc\u0645\u06cc\u0644 \u062e\u0631\u06cc\u062f\u0627\u0631 \u0648 \u0642\u06cc\u0645\u062a \u0628\u0644\u06cc\u0637 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u0645\u0648\u062c\u0648\u062f\u06cc \u0631\u0627 \u06cc\u06a9\u06cc \u06a9\u0645 \u06a9\u0631\u062f\u0647 \u0648 \u06cc\u06a9 \u0631\u0648\u06cc\u062f\u0627\u062f <code class=\"cursor-pointer codespan\">buy<\/code> \u0631\u0627 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc (\u0627\u06cc\u0645\u06cc\u0644\u060c \u0642\u06cc\u0645\u062a \u0648 \u062a\u0627\u06cc\u0645\u200c\u0627\u0633\u062a\u0645\u067e) \u0633\u0627\u0637\u0639 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u06a9\u0644\u0627\u0633 \u0631\u0627 \u0627\u06a9\u0633\u067e\u0648\u0631\u062a (Export) \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0628\u0646\u062f\u06cc\u062f.<\/p>\n<div><\/div>\n<hr class=\"border-[#EBEBEB] dark:border-[#EBEBEB]\/16\" \/>\n<h3 class=\"svelte-4sys19\" dir=\"auto\">\u0645\u0631\u062d\u0644\u0647 \u06f2 \u2014 \u06af\u0648\u0634 \u062f\u0627\u062f\u0646 \u0628\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627<\/h3>\n<p class=\"svelte-4sys19\" dir=\"auto\">Node.js \u0628\u0647 \u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0628\u0627 \u062a\u0627\u0628\u0639 <code class=\"cursor-pointer codespan\">on()<\/code> \u06cc\u06a9 \u0634\u0646\u0648\u0646\u062f\u0647 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0631\u0648\u06cc\u062f\u0627\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u0645\u062a\u062f \u0628\u0647 \u0646\u0627\u0645 \u0631\u0648\u06cc\u062f\u0627\u062f \u062e\u0627\u0635\u06cc \u06af\u0648\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u067e\u0633 \u0627\u0632 \u0631\u062e \u062f\u0627\u062f\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f\u060c \u06cc\u06a9 \u062a\u0627\u0628\u0639 Callback \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f\u06cc \u0628\u0647 \u0646\u0627\u0645 <code class=\"cursor-pointer codespan\">firstListener.js<\/code> \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1122\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037ceh \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">nano firstListener.js<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-71\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u0628\u062a\u062f\u0627 <code class=\"cursor-pointer codespan\">TicketManager<\/code> \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">javascript<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1124\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-javascript rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cei \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">const TicketManager = require(&#8220;.\/ticketManager&#8221;);<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">const ticketManager = new TicketManager(10);<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-75\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062d\u0627\u0644\u0627 \u0627\u0648\u0644\u06cc\u0646 \u0634\u0646\u0648\u0646\u062f\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f <code class=\"cursor-pointer codespan\">buy<\/code> \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">javascript<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1126\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-javascript rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cej \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">const TicketManager = require(&#8220;.\/ticketManager&#8221;);<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">const ticketManager = new TicketManager(10);<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">ticketManager.on(&#8220;buy&#8221;, () =&gt; {<\/div>\n<div class=\"cm-line\">console.log(&#8220;Someone bought a ticket!&#8221;);<\/div>\n<div class=\"cm-line\">});<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">ticketManager.buy(&#8220;test@email.com&#8221;, 20);<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-79\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0628\u0631\u0627\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0634\u0646\u0648\u0646\u062f\u0647 \u062c\u062f\u06cc\u062f\u060c \u0627\u0632 \u062a\u0627\u0628\u0639 <code class=\"cursor-pointer codespan\">on()<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645. \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062f\u0648\u0645 \u0622\u0646 \u06cc\u06a9 \u062a\u0627\u0628\u0639 Arrow (\u062a\u0627\u0628\u0639 Callback) \u0627\u0633\u062a \u06a9\u0647 \u067e\u0633 \u0627\u0632 \u0633\u0627\u0637\u0639 \u0634\u062f\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0633\u067e\u0633 \u0628\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc <code class=\"cursor-pointer codespan\">buy()<\/code> \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627 \u0634\u0644\u06cc\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1128\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cek \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">node firstListener.js<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-85\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062e\u0631\u0648\u062c\u06cc \u062f\u0631 \u06a9\u0646\u0633\u0648\u0644 \u0634\u0645\u0627 \u0627\u06cc\u0646 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">text<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1129\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-text rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cel \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">Output<\/div>\n<div class=\"cm-line\">Someone bought a ticket!<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-89\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u06af\u0631 \u0645\u062a\u062f <code class=\"cursor-pointer codespan\">buy()<\/code> \u0631\u0627 \u062f\u0648\u0628\u0627\u0631 \u0635\u062f\u0627 \u0628\u0632\u0646\u06cc\u062f\u060c \u067e\u06cc\u0627\u0645 \u062f\u0648 \u0628\u0627\u0631 \u0686\u0627\u067e \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0632\u06cc\u0631\u0627 \u0634\u0646\u0648\u0646\u062f\u0647 \u0647\u0631 \u062f\u0648 \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u06af\u0627\u0647\u06cc \u0627\u0648\u0642\u0627\u062a \u0645\u0627 \u0641\u0642\u0637 \u0628\u0647 \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631\u06cc \u06a9\u0647 \u06cc\u06a9 \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u062e \u0645\u06cc\u200c\u062f\u0647\u062f \u0639\u0644\u0627\u0642\u0647\u200c\u0645\u0646\u062f\u06cc\u0645. Node.js \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u062a\u0627\u0628\u0639 <code class=\"cursor-pointer codespan\">once()<\/code> \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a. \u0648\u0642\u062a\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f\u06cc \u062a\u0648\u0633\u0637 \u0634\u0646\u0648\u0646\u062f\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0628\u0627 <code class=\"cursor-pointer codespan\">once()<\/code> \u062b\u0628\u062a \u0634\u062f\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u0634\u0648\u062f\u060c Node.js \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0622\u0646 \u0634\u0646\u0648\u0646\u062f\u0647 \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0631\u062f\u0647 \u0648 \u0633\u067e\u0633 \u06a9\u062f \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<div><\/div>\n<hr class=\"border-[#EBEBEB] dark:border-[#EBEBEB]\/16\" \/>\n<h3 class=\"svelte-4sys19\" dir=\"auto\">\u0645\u0631\u062d\u0644\u0647 \u06f3 \u2014 \u062f\u0631\u06cc\u0627\u0641\u062a \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f<\/h3>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062a\u0627 \u0627\u06cc\u0646\u062c\u0627 \u0634\u0646\u0648\u0646\u062f\u0647\u200c\u0647\u0627\u06cc\u06cc \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u06cc\u062f \u06a9\u0647 \u0628\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u0633\u0627\u0637\u0639 \u0634\u062f\u0647 \u0648\u0627\u06a9\u0646\u0634 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f. \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u0633\u0627\u0637\u0639 \u0634\u062f\u0647 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0647\u0645\u0631\u0627\u0647 \u062e\u0648\u062f \u062f\u0627\u0631\u0646\u062f. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u0645.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0645\u0627 \u0686\u0646\u062f \u0645\u0627\u0698\u0648\u0644 \u062c\u062f\u06cc\u062f Node.js \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645: \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u0648 \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0641\u0627\u06cc\u0644 <code class=\"cursor-pointer codespan\">emailService.js<\/code> \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1132\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cem \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">nano emailService.js<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-103\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">javascript<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1133\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-javascript rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cen \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">class EmailService {<\/div>\n<div class=\"cm-line\">send(email) {<\/div>\n<div class=\"cm-line\">console.log(`Sending email to ${email}`);<\/div>\n<div class=\"cm-line\">}<\/div>\n<div class=\"cm-line\">}<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">module.exports = EmailService<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-105\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0633\u067e\u0633 \u0641\u0627\u06cc\u0644 <code class=\"cursor-pointer codespan\">databaseService.js<\/code> \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1136\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037ceo \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">nano databaseService.js<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-109\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">javascript<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1137\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-javascript rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cep \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">class DatabaseService {<\/div>\n<div class=\"cm-line\">save(email, price, timestamp) {<\/div>\n<div class=\"cm-line\">console.log(`Running query: INSERT INTO orders VALUES (email, price, created) VALUES (${email}, ${price}, ${timestamp})`);<\/div>\n<div class=\"cm-line\">}<\/div>\n<div class=\"cm-line\">}<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">module.exports = DatabaseService<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-111\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062d\u0627\u0644\u0627 \u0641\u0627\u06cc\u0644 <code class=\"cursor-pointer codespan\">index.js<\/code> \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u06cc\u0646 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0647\u0645 \u0645\u062a\u0635\u0644 \u06a9\u0646\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1140\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037ceq \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">nano index.js<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-115\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0647 \u0648 \u0622\u0628\u062c\u06a9\u062a\u200c\u0647\u0627 \u0631\u0627 \u0646\u0645\u0648\u0646\u0647\u200c\u0633\u0627\u0632\u06cc (Instantiate) \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">javascript<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1141\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-javascript rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cer \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">const TicketManager = require(&#8220;.\/ticketManager&#8221;);<\/div>\n<div class=\"cm-line\">const EmailService = require(&#8220;.\/emailService&#8221;);<\/div>\n<div class=\"cm-line\">const DatabaseService = require(&#8220;.\/databaseService&#8221;);<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">const ticketManager = new TicketManager(3);<\/div>\n<div class=\"cm-line\">const emailService = new EmailService();<\/div>\n<div class=\"cm-line\">const databaseService = new DatabaseService();<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">ticketManager.on(&#8220;buy&#8221;, (email, price, timestamp) =&gt; {<\/div>\n<div class=\"cm-line\">emailService.send(email);<\/div>\n<div class=\"cm-line\">databaseService.save(email, price, timestamp);<\/div>\n<div class=\"cm-line\">});<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">ticketManager.buy(&#8220;test@email.com&#8221;, 10);<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-119\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062f\u0631 \u0627\u06cc\u0646 \u06a9\u062f\u060c \u062a\u0627\u0628\u0639 Callback \u0645\u0627 \u0633\u0647 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062f\u0627\u0631\u062f \u06a9\u0647 \u0628\u0627 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0633\u0627\u0637\u0639 \u0634\u062f\u0647 \u0627\u0632 \u0637\u0631\u0641 <code class=\"cursor-pointer codespan\">emit()<\/code> \u0645\u0637\u0627\u0628\u0642\u062a \u062f\u0627\u0631\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1144\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037ces \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">node index.js<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-125\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">text<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1145\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-text rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cet \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">Output<\/div>\n<div class=\"cm-line\">Sending email to test@email.com<\/div>\n<div class=\"cm-line\">Running query: INSERT INTO orders VALUES (email, price, created) VALUES (test@email.com, 10, 1588720081832)<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-129\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u062f\u0631\u06cc\u0627\u0641\u062a \u0634\u062f\u0647 \u0648 \u062f\u0631 \u062a\u0648\u0627\u0628\u0639 \u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0646\u062f.<\/p>\n<div><\/div>\n<hr class=\"border-[#EBEBEB] dark:border-[#EBEBEB]\/16\" \/>\n<h3 class=\"svelte-4sys19\" dir=\"auto\">\u0645\u0631\u062d\u0644\u0647 \u06f4 \u2014 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u062e\u0637\u0627<\/h3>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u06af\u0631 \u06cc\u06a9 Event Emitter \u0646\u062a\u0648\u0627\u0646\u062f \u0639\u0645\u0644\u06cc\u0627\u062a \u062e\u0648\u062f \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u062f\u060c \u0628\u0627\u06cc\u062f \u0631\u0648\u06cc\u062f\u0627\u062f\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0639\u0644\u0627\u0645\u062a\u200c\u06af\u0630\u0627\u0631\u06cc \u0634\u06a9\u0633\u062a \u0639\u0645\u0644\u06cc\u0627\u062a \u0633\u0627\u0637\u0639 \u06a9\u0646\u062f. \u062f\u0631 Node.js\u060c \u0631\u0648\u0634 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0633\u0627\u0637\u0639 \u06a9\u0631\u062f\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f <code class=\"cursor-pointer codespan\">error<\/code> \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u0628\u0627\u06cc\u062f \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u06cc\u06a9 \u0622\u0628\u062c\u06a9\u062a <code class=\"cursor-pointer codespan\">Error<\/code> \u0628\u0627\u0634\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631\u060c \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0644\u06cc\u0637 \u0645\u0627 \u0628\u0627 \u0647\u0631 \u0628\u0627\u0631 \u062e\u0631\u06cc\u062f\u060c \u0645\u0648\u062c\u0648\u062f\u06cc \u0631\u0627 \u06cc\u06a9\u06cc \u06a9\u0627\u0647\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f\u060c \u0627\u0645\u0627 \u0686\u06cc\u0632\u06cc \u0645\u0627\u0646\u0639 \u0641\u0631\u0648\u0634 \u0628\u0644\u06cc\u0637 \u0628\u06cc\u0634\u062a\u0631 \u0627\u0632 \u0645\u0648\u062c\u0648\u062f\u06cc \u0646\u0645\u06cc\u200c\u0634\u0648\u062f. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0645\u062a\u062f <code class=\"cursor-pointer codespan\">buy()<\/code> \u0631\u0627 \u0637\u0648\u0631\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u0645 \u06a9\u0647 \u0627\u06af\u0631 \u0645\u0648\u062c\u0648\u062f\u06cc \u0628\u0647 0 \u0631\u0633\u06cc\u062f\u060c \u062e\u0637\u0627\u06cc\u06cc \u0633\u0627\u0637\u0639 \u06a9\u0646\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0641\u0627\u06cc\u0644 <code class=\"cursor-pointer codespan\">ticketManager.js<\/code> \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1148\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037ceu \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">nano ticketManager.js<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-141\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0645\u062a\u062f <code class=\"cursor-pointer codespan\">buy()<\/code> \u0631\u0627 \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">javascript<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1149\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-javascript rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cev \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">buy(email, price) {<\/div>\n<div class=\"cm-line\">if (this.supply &gt; 0) {<\/div>\n<div class=\"cm-line\">this.supply&#8211;;<\/div>\n<div class=\"cm-line\">this.emit(&#8220;buy&#8221;, email, price, Date.now());<\/div>\n<div class=\"cm-line\">return;<\/div>\n<div class=\"cm-line\">}<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">this.emit(&#8220;error&#8221;, new Error(&#8220;There are no more tickets left to purchase&#8221;));<\/div>\n<div class=\"cm-line\">}<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-145\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f. \u062d\u0627\u0644\u0627 \u0641\u0627\u06cc\u0644 <code class=\"cursor-pointer codespan\">index.js<\/code> \u0631\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f \u062a\u0627 4 \u0628\u0644\u06cc\u0637 \u0628\u062e\u0631\u06cc\u0645 (\u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0645\u0648\u062c\u0648\u062f\u06cc 3 \u0627\u0633\u062a):<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1152\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cew \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">nano index.js<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-149\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0628\u0647 \u0627\u0646\u062a\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644 \u062e\u0637\u0648\u0637 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">javascript<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1153\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-javascript rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cex \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">&#8230;<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">ticketManager.buy(&#8220;test@email.com&#8221;, 10);<\/div>\n<div class=\"cm-line\">ticketManager.buy(&#8220;test@email.com&#8221;, 10);<\/div>\n<div class=\"cm-line\">ticketManager.buy(&#8220;test@email.com&#8221;, 10);<\/div>\n<div class=\"cm-line\">ticketManager.buy(&#8220;test@email.com&#8221;, 10);<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-153\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">bash<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1156\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-bash rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cey \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">node index.js<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-157\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0628\u0631\u0627\u06cc \u0633\u0647 \u062e\u0631\u06cc\u062f \u0627\u0648\u0644 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u062e\u0648\u0628 \u067e\u06cc\u0634 \u0645\u06cc\u200c\u0631\u0648\u062f\u060c \u0627\u0645\u0627 \u062f\u0631 \u062e\u0631\u06cc\u062f \u0686\u0647\u0627\u0631\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0631\u0634 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">text<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1158\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-text rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cez \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">Output<\/div>\n<div class=\"cm-line\">&#8230;<\/div>\n<div class=\"cm-line\">events.js:196<\/div>\n<div class=\"cm-line\">throw er; \/\/ Unhandled &#8216;error&#8217; event<\/div>\n<div class=\"cm-line\">^<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">Error: There are no more tickets left to purchase<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-161\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u06af\u0631 \u06cc\u06a9 \u0631\u0648\u06cc\u062f\u0627\u062f \u062e\u0637\u0627 \u0633\u0627\u0637\u0639 \u0634\u0648\u062f \u0648 \u0634\u0646\u0648\u0646\u062f\u0647\u200c\u0627\u06cc \u0628\u0631\u0627\u06cc \u0622\u0646 \u062b\u0628\u062a \u0646\u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u06cc\u0645\u060c Node.js \u062e\u0637\u0627 \u0631\u0627 \u067e\u0631\u062a\u0627\u0628 (Throw) \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u06a9\u0631\u0634 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0647\u0645\u06cc\u0634\u0647 \u0628\u0631\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u062e\u0637\u0627 \u0634\u0646\u0648\u0646\u062f\u0647 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0641\u0627\u06cc\u0644 <code class=\"cursor-pointer codespan\">index.js<\/code> \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u0634\u0646\u0648\u0646\u062f\u0647 \u062e\u0637\u0627 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">javascript<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1160\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-javascript rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cf0 \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">&#8230;<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">ticketManager.on(&#8220;error&#8221;, (error) =&gt; {<\/div>\n<div class=\"cm-line\">console.error(`Gracefully handling our error: ${error}`);<\/div>\n<div class=\"cm-line\">});<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">ticketManager.buy(&#8220;test@email.com&#8221;, 10);<\/div>\n<div class=\"cm-line\">&#8230;<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-167\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u0628\u0627\u0631 \u0628\u0647 \u062c\u0627\u06cc \u06a9\u0631\u0634 \u06a9\u0631\u062f\u0646\u060c \u062e\u0637\u0627 \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0628\u0627\u06cc\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">text<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1162\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-text rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cf1 \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">Output<\/div>\n<div class=\"cm-line\">Sending email to test@email.com<\/div>\n<div class=\"cm-line\">&#8230;<\/div>\n<div class=\"cm-line\">Gracefully handling our error: Error: There are no more tickets left to purchase<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-171\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<hr class=\"border-[#EBEBEB] dark:border-[#EBEBEB]\/16\" \/>\n<h3 class=\"svelte-4sys19\" dir=\"auto\">\u0645\u0631\u062d\u0644\u0647 \u06f5 \u2014 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0634\u0646\u0648\u0646\u062f\u06af\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f<\/h3>\n<p class=\"svelte-4sys19\" dir=\"auto\">Event Emitter\u200c\u0647\u0627 \u0645\u06a9\u0627\u0646\u06cc\u0632\u0645\u200c\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af \u0648 \u06a9\u0646\u062a\u0631\u0644 \u062a\u0639\u062f\u0627\u062f \u0634\u0646\u0648\u0646\u062f\u06af\u0627\u0646\u06cc \u06a9\u0647 \u062f\u0631 \u06cc\u06a9 \u0631\u0648\u06cc\u062f\u0627\u062f \u0645\u0634\u062a\u0631\u06a9 \u0634\u062f\u0647\u200c\u0627\u0646\u062f \u062f\u0627\u0631\u0646\u062f. \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u062a\u0639\u062f\u0627\u062f \u0634\u0646\u0648\u0646\u062f\u06af\u0627\u0646 \u06cc\u06a9 \u0631\u0648\u06cc\u062f\u0627\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u0645\u062a\u062f <code class=\"cursor-pointer codespan\">listenerCount()<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0641\u0627\u06cc\u0644 <code class=\"cursor-pointer codespan\">index.js<\/code> \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u062a\u0645\u0627\u0645 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc\u200c\u0647\u0627\u06cc <code class=\"cursor-pointer codespan\">buy()<\/code> \u0631\u0627 \u067e\u0627\u06a9 \u06a9\u0646\u06cc\u062f. \u0628\u0647 \u062c\u0627\u06cc \u0622\u0646 \u06a9\u062f\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">javascript<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1164\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-javascript rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cf2 \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">const TicketManager = require(&#8220;.\/ticketManager&#8221;);<\/div>\n<div class=\"cm-line\">const EmailService = require(&#8220;.\/emailService&#8221;);<\/div>\n<div class=\"cm-line\">const DatabaseService = require(&#8220;.\/databaseService&#8221;);<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">const ticketManager = new TicketManager(3);<\/div>\n<div class=\"cm-line\">const emailService = new EmailService();<\/div>\n<div class=\"cm-line\">const databaseService = new DatabaseService();<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">ticketManager.on(&#8220;buy&#8221;, (email, price, timestamp) =&gt; {<\/div>\n<div class=\"cm-line\">emailService.send(email);<\/div>\n<div class=\"cm-line\">databaseService.save(email, price, timestamp);<\/div>\n<div class=\"cm-line\">});<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">ticketManager.on(&#8220;error&#8221;, (error) =&gt; {<\/div>\n<div class=\"cm-line\">console.error(`Gracefully handling our error: ${error}`);<\/div>\n<div class=\"cm-line\">});<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">console.log(`We have ${ticketManager.listenerCount(&#8220;buy&#8221;)} listener(s) for the buy event`);<\/div>\n<div class=\"cm-line\">console.log(`We have ${ticketManager.listenerCount(&#8220;error&#8221;)} listener(s) for the error event`);<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-179\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062e\u0631\u0648\u062c\u06cc \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0631\u0648\u06cc\u062f\u0627\u062f \u06cc\u06a9 \u0634\u0646\u0648\u0646\u062f\u0647 \u062f\u0627\u0631\u06cc\u0645.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062f\u0631 Node.js \u0628\u0631\u0627\u06cc \u062d\u0630\u0641 \u06cc\u06a9 \u0634\u0646\u0648\u0646\u062f\u0647 \u0627\u0632 \u062a\u0627\u0628\u0639 <code class=\"cursor-pointer codespan\">off()<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u0645\u062a\u062f \u062f\u0648 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f: \u0646\u0627\u0645 \u0631\u0648\u06cc\u062f\u0627\u062f \u0648 \u062a\u0627\u0628\u0639\u06cc \u06a9\u0647 \u0628\u0647 \u0622\u0646 \u06af\u0648\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u062d\u0630\u0641 \u06cc\u06a9 \u0634\u0646\u0648\u0646\u062f\u0647\u060c \u062a\u0627\u0628\u0639 Callback \u0622\u0646 \u0628\u0627\u06cc\u062f \u062f\u0631 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u0628\u0627\u0634\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0628\u0647 \u0627\u0646\u062a\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644 <code class=\"cursor-pointer codespan\">index.js<\/code> \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">javascript<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1166\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-javascript rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cf3 \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">const onBuy = () =&gt; {<\/div>\n<div class=\"cm-line\">console.log(&#8220;I will be removed soon&#8221;);<\/div>\n<div class=\"cm-line\">};<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">ticketManager.on(&#8220;buy&#8221;, onBuy);<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">console.log(`We added a new event listener bringing our total count for the buy event to: ${ticketManager.listenerCount(&#8220;buy&#8221;)}`);<\/div>\n<div class=\"cm-line\">ticketManager.buy(&#8220;test@email&#8221;, 20);<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">ticketManager.off(&#8220;buy&#8221;, onBuy);<\/div>\n<div class=\"cm-line\"><\/div>\n<div class=\"cm-line\">console.log(`We now have: ${ticketManager.listenerCount(&#8220;buy&#8221;)} listener(s) for the buy event`);<\/div>\n<div class=\"cm-line\">ticketManager.buy(&#8220;test@email&#8221;, 20);<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-187\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u06af\u0631 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f\u060c \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u067e\u0633 \u0627\u0632 \u062d\u0630\u0641 \u0634\u0646\u0648\u0646\u062f\u0647 \u062f\u0648\u0645\u060c \u0641\u0642\u0637 \u0634\u0646\u0648\u0646\u062f\u0647 \u0627\u0648\u0644 (\u0627\u0631\u0633\u0627\u0644 \u0627\u06cc\u0645\u06cc\u0644 \u0648 \u0630\u062e\u06cc\u0631\u0647 \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633) \u0628\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f \u0648\u0627\u06a9\u0646\u0634 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u0647\u06cc\u0645 \u062a\u0645\u0627\u0645 \u0634\u0646\u0648\u0646\u062f\u06af\u0627\u0646 \u06cc\u06a9 \u0631\u0648\u06cc\u062f\u0627\u062f \u062e\u0627\u0635 \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u0645\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u062a\u0627\u0628\u0639 <code class=\"cursor-pointer codespan\">removeAllListeners()<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645:<\/p>\n<div><\/div>\n<div class=\"relative my-2 flex flex-col rounded-xl border border-[#0000000A] bg-[#F7F7F7] dark:bg-[#202123] p-2\" dir=\"ltr\">\n<div class=\"absolute pl-2 py-1 text-xs font-medium text-text-300 dark:text-white\">javascript<\/div>\n<div class=\"sticky top-8 mb-1 flex items-center justify-end z-11 text-xs text-black dark:text-white\">\n<div class=\"flex items-center gap-0.5 translate-y-[1px]\">\n<div id=\"bits-c1168\" class=\"flex\" tabindex=\"0\" data-state=\"closed\" data-delay-duration=\"200\" data-tooltip-trigger=\"\" aria-label=\"Copy\"><\/div>\n<\/div>\n<\/div>\n<div class=\"language-javascript rounded-b-lg overflow-hidden\">\n<div class=\"h-full w-full\">\n<div class=\"cm-editor \u037c1 \u037c2 \u037c4 \u037cf4 \u037c5k\">\n<div class=\"cm-announced\" aria-live=\"polite\"><\/div>\n<div class=\"cm-scroller\" tabindex=\"-1\">\n<div class=\"cm-content\" role=\"textbox\" contenteditable=\"false\" spellcheck=\"false\" translate=\"no\" aria-multiline=\"true\">\n<div class=\"cm-line\">ticketManager.removeAllListeners(&#8220;buy&#8221;);<\/div>\n<div class=\"cm-line\">console.log(`We have ${ticketManager.listenerCount(&#8220;buy&#8221;)} listeners for the buy event`);<\/div>\n<div class=\"cm-line\">ticketManager.buy(&#8220;test@email&#8221;, 20);<\/div>\n<div class=\"cm-line\">console.log(&#8220;The last ticket was bought&#8221;);<\/div>\n<\/div>\n<div class=\"cm-layer cm-layer-above cm-cursorLayer\" aria-hidden=\"true\"><\/div>\n<div class=\"cm-layer cm-selectionLayer\" aria-hidden=\"true\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"plt-canvas-6d0b9889-6205-4b5d-b37c-a79356e0461e-193\" class=\"bg-gray-50 dark:bg-[#202123] text-gray-900 dark:text-white max-w-full overflow-x-auto scrollbar-hidden\"><\/div>\n<\/div>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u067e\u0633 \u0627\u0632 \u062d\u0630\u0641 \u062a\u0645\u0627\u0645 \u0634\u0646\u0648\u0646\u062f\u06af\u0627\u0646\u060c \u062f\u06cc\u06af\u0631 \u0647\u06cc\u0686 \u0648\u0627\u06a9\u0646\u0634\u06cc \u0628\u0647 \u062e\u0631\u06cc\u062f \u0628\u0644\u06cc\u0637\u200c\u0647\u0627 \u0635\u0648\u0631\u062a \u0646\u0645\u06cc\u200c\u06af\u06cc\u0631\u062f.<\/p>\n<div><\/div>\n<hr class=\"border-[#EBEBEB] dark:border-[#EBEBEB]\/16\" \/>\n<p class=\"svelte-4sys19\" dir=\"auto\"><strong>\u0646\u062a\u06cc\u062c\u0647\u200c\u06af\u06cc\u0631\u06cc<\/strong><\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u06cc\u0627\u062f \u06af\u0631\u0641\u062a\u06cc\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0627\u0632 Event Emitter\u200c\u0647\u0627\u06cc Node.js \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0634\u0645\u0627 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0631\u0627 \u0628\u0627 <code class=\"cursor-pointer codespan\">emit()<\/code> \u0633\u0627\u0637\u0639 \u06a9\u0631\u062f\u06cc\u062f\u060c \u0628\u0627 <code class=\"cursor-pointer codespan\">on()<\/code> \u0648 <code class=\"cursor-pointer codespan\">once()<\/code> \u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u06af\u0648\u0634 \u062f\u0627\u062f\u06cc\u062f\u060c \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u062e\u0637\u0627 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0631\u062f\u06cc\u062f \u0648 \u0628\u0627 <code class=\"cursor-pointer codespan\">listenerCount()<\/code> \u0648 <code class=\"cursor-pointer codespan\">off()<\/code> \u0634\u0646\u0648\u0646\u062f\u06af\u0627\u0646 \u0631\u0627 \u0645\u0627\u0646\u06cc\u062a\u0648\u0631 \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0631\u062f\u06cc\u062f.<\/p>\n<div><\/div>\n<p class=\"svelte-4sys19\" dir=\"auto\">\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Callback\u200c\u0647\u0627 \u0648 Promise\u200c\u0647\u0627\u060c \u0633\u06cc\u0633\u062a\u0645 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0644\u06cc\u0637 \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0627 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc \u0627\u06cc\u0645\u06cc\u0644 \u0648 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0627\u062f\u063a\u0627\u0645 \u0645\u06cc\u200c\u0634\u062f \u062a\u0627 \u0639\u0645\u0644\u06a9\u0631\u062f \u06cc\u06a9\u0633\u0627\u0646\u06cc \u0628\u0647 \u062f\u0633\u062a \u0622\u06cc\u062f. \u0627\u0645\u0627 \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u0632 Event Emitter\u200c\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645\u060c \u0631\u0648\u06cc\u062f\u0627\u062f \u0627\u0632 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u0622\u0646 \u062c\u062f\u0627 (Decouple) \u0634\u062f. \u0647\u0631 \u0645\u0627\u0698\u0648\u0644\u06cc \u06a9\u0647 \u0628\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0644\u06cc\u0637 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0631\u0648\u06cc\u062f\u0627\u062f \u0622\u0646 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0647 \u0622\u0646 \u0648\u0627\u06a9\u0646\u0634 \u0646\u0634\u0627\u0646 \u062f\u0647\u062f. \u0627\u06cc\u0646 \u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631\u06cc (Scalability) \u0628\u0633\u06cc\u0627\u0631 \u062e\u0648\u0628\u06cc \u0628\u0647 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0634\u0645\u0627 \u0645\u06cc\u200c\u0628\u062e\u0634\u062f.<\/p>\n<p dir=\"auto\">\n<p dir=\"auto\">\n<p dir=\"auto\">\n<p dir=\"auto\">\n<p dir=\"auto\">\u0627\u0632 \u0647\u0645\u0631\u0627\u0647\u06cc \u0634\u0645\u0627 \u0628\u0627 <strong><a href=\"https:\/\/parmin.cloud\/\">\u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f<\/a><\/strong> \u0633\u067e\u0627\u0633\u06af\u0632\u0627\u0631\u06cc\u0645.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0645\u0642\u062f\u0645\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 (Events) \u062f\u0631 Node.js \u062a\u0648\u0633\u0637 \u0622\u0628\u062c\u06a9\u062a\u200c\u0647\u0627\u06cc\u06cc \u0628\u0647 \u0646\u0627\u0645 Event Emitter (\u0633\u0627\u0637\u0639\u200c\u06a9\u0646\u0646\u062f\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f) \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u06a9\u0647 \u0628\u0627 \u0627\u0631\u0633\u0627\u0644 \u06cc\u06a9 \u067e\u06cc\u0627\u0645\u060c \u0648\u0642\u0648\u0639 \u06cc\u06a9 \u0639\u0645\u0644\u06cc\u0627\u062a \u0631\u0627 \u0639\u0644\u0627\u0645\u062a\u200c\u06af\u0630\u0627\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u062c\u0627\u0648\u0627\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u06a9\u062f\u06cc \u0628\u0646\u0648\u06cc\u0633\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u06cc\u06a9 Event Emitter \u06af\u0648\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f (Listen)\u060c \u06a9\u0647 \u0627\u06cc\u0646 \u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0647\u0631 \u0628\u0627\u0631 \u0627\u06cc\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0631\u062e \u062f\u0627\u062f\u0646\u062f\u060c \u062a\u0648\u0627\u0628\u0639 \u062e\u0627\u0635\u06cc \u0631\u0627 &hellip;<\/p>\n","protected":false},"author":9,"featured_media":6777,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-6776","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-8"],"_links":{"self":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/6776","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/comments?post=6776"}],"version-history":[{"count":0,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/6776\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media\/6777"}],"wp:attachment":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media?parent=6776"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/categories?post=6776"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/tags?post=6776"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}