سلام. این نوشته یک کپی بدون نقص از سایت کیوی است. فقط برای رونوشت داشتن شخصی این جا منتشر می شود! با تشکر از وب سایت خوب کیوی.
Reactive programming یا ( شاید به اشتباه ) برنامه نویسی واکنشی، یعنی برنامه نویسی با جریان های اطلاعات غیر همزمان. در واقع استفاده از این روش چیز جدیدی نیست، شاید ساده ترین نمونه ی اون استفاده از خاصیت OnClick باشه. کلیک کردن در واقع یک جریان (stream) هست که یک متد با نظاره کردن اون، کاری رو انجام میده (مثلا متد با مشاهده ی کلیک شدن روی یک دکمه پیغامی رو نشون میده.)
Reactive در واقع نسخه ای قدرتمند تر از ایده ی بالاست. این جریان یا stream میتونه شامل هر چیزی باشه، نه تنها خاصیت کلیک کردن بلکه شامل متغیرها، ورودی های کاربر، properties و انواع دیگه ای از اطلاعات. مثلا صفحه ی اینستاگرامتون رو در نظر بگیرید که با دیدن هر پست، عکس العملی رو نسبت به اون انجام میدید.( جریان هایی از عکس ها رو نظاره می کنید و به هر کدومشون واکنشی خاص رو نشون میدید.)
نکته ی جالب تر در مورد این جریان ها، کارهایی هست که میشه روی اونها انجام داد. مثلا یک جریان رو به عنوان ورودی برای جریا دیگه قرار داد و حتی از چند جریان به عنوان ورودی یکی دیگه استفاده کرد. میشه دو جریان رو یکی کرد، میشه روی یک جریان فیلتر هایی رو اعمال کرد و از اون جریان دیگه ای ساخت و یا اطلاعات رو از یک جریان به جریان دیگه مپ کرد.
جریان ها، مرکزیت این الگو رو تشکیل میدن و شاید شکل زیر یکم قضیه رو روشن تر کنه.
هر جریان، دنباله ای از اتفاق هاست که بر اساس زمان مرتب شدن. هر جریان میتونه ۳ نوع خروجی رو داشته باشه، یک مقدار(از هر نوعی باشه)، یک خطا و یا یک سیگنال به نشونه ی تمام شدن اون جریان خاص. به عنوان مثال در عملیات کلیک کردن، بسته شدن اون اکتیویتی که دکمه درون اون هست رو میشه سیگنال complete در نظر گرفت.این جریان ها رو فقط به صورت غیر همزمان میشه دریافت کرد، به این صورت که یک متد خاص با مشاهده ی خارج شدن یک مقدار از یک جریان، کاری رو روی اون انجام بده. یک متد با دریافت پیغام خطا کاری انجام بده و متدی هم به همین صورت برای سیگنال پایان وجود داشته باشه. بهتر هست بگم این متد ها به اون جریان خاص گوش میدن.
به این گوش دادن در اصطلاح subscribing و به اون متد ها observers یا ناظرها گفته میشه. به جریان هم که نقش کلیدی رو ایفا می کنه observable (قابل مشاهده!) گفته میشه.