برنامهنویسی رویدادگرا یا برنامه نویسی رخدادگرا یک الگوی برنامهنویسی است که در آن، روند اجرای برنامه توسط رویدادها - مانند خروجی یک سنسور، تعاملات کاربر (مانند کلیک موس و فشار دادن کلیدها) یا پیامهای دریافتی از سایر برنامهها یا ریسهها - تعیین میگردد.
برنامهنویسی رویدادگرا به عنوان یکی از پارادایمهای برنامهنویسی، بهطور گسترده برای توسعه نرمافزارهای مدرن، از جمله رابطهای کاربری گرافیکی و سیستمهای توزیعشده استفاده میشود. این مدل به کمک حلقۀ رخداد (Event Loops) کار میکند که بهطور مداوم رویدادها را پایش و مدیریت میکنند.
در برنامهنویسی رویدادگرا، نرمافزار از یک حلقه اصلی تشکیل شده است که وظایف زیر را برعهده دارد:
حلقۀ رخداد در این ساختار نقشی کلیدی دارد و بهطور مستقیم یا غیرمستقیم مسئول مدیریت و اجرای توابع مرتبط با رویدادهاست. این حلقه، صف رویدادها (Event Queue) را بررسی کرده و با پردازش رویدادها، برنامه را از حالت انتظار به وضعیت اجرا درمیآورد.
در بسیاری از فریمورکهای مدرن برنامهنویسی، کد منبع مربوط به حلقههای رخداد از قبل پیادهسازی شده است و برنامهنویسان تنها نیاز به تعریف نگهدارندههای رویداد (Event Handlers) دارند. برای مثال:
در برنامهنویسی رویدادگرا، کدهایی که برای پاسخگویی به یک رویداد خاص نوشته میشوند، نگهدارنده رویداد (Event Handler) نام دارند. برای مثال:
وقتی کاربر کلید Enter را فشار میدهد، یک نگهدارنده رویداد مانند OnKeyEnter() فراخوانی میشود که وظیفه اجرای کد مرتبط با آن رویداد را بر عهده دارد. در ادامه نمونهای از پیادهسازی ساده ارائه میشود:
function onKeyEnter(inputText) {
console.log("کاربر متن زیر را وارد کرد:");
console.log(inputText);
let numbers = inputText.split(" ");
if (numbers.length === 2) {
let sum = parseInt(numbers[0]) + parseInt(numbers[1]);
console.log("مجموع اعداد وارد شده برابر است با: " + sum);
} else {
console.log("ورودی نامعتبر است. لطفاً دو عدد وارد کنید.");
}
}
onKeyEnter("12 34");
برنامهنویسی رویدادگرا بهطور مستقیم بر پایهٔ حلقۀ رخداد بنا شده است. حلقه رخداد وظیفه پایش و مدیریت رویدادها را بر عهده دارد و از طریق فراخوانی نگهدارندههای رویداد، پاسخ مناسبی به ورودیها یا پیامها ارائه میدهد.