Professional Documents
Culture Documents
Functional Reactive Programming - Arabic
Functional Reactive Programming - Arabic
اــلبرـمـجة اــلتفاـعلية
DevFest Najaf 2022
Wisam Naji
Lead Coding Trainer @ Re:Coded
👋 مرحبا
اني وسام ناجي
wisamnaji
@wissonaji
ايضاح
var a = 10;
var b = a + 1;
تخيل االخوين
a&b
var a = 10;
var b = a + 1;
b depends on a
تخيل االخوين
a&b
;var a = 10
;var b = a + 1
var a = 10;
var b = a + 1;
a = 11;
تخيل االخوين
a&b
;var a = 10
;var b = a + 1
;a = 11
var a = 10;
var b = a + 1;
a = 11;
log(b) // 11
تخيل االخوين
a&b
;var a = 10
;var b = a + 1
;a = 11
log(b) // 11
var a = 10;
var b = a + 1;
a = 11;
b = a + 1;
log(b) // 12
تخيل االخوين
a&b
الزم
;var a = 10
ن
عيد
;var b = a + 1
اال
;a = 11
حت
;b = a + 1
سا
ب
log(b) // 12
لق
يم
ةb
هسه خل نتخيل اكو عملية
Operator
=>
نسميهة ربط المصير او Destiny Operator
مثال
Assert.AreEqual(21, b) // true
مع ذلك ،بشنو تذكرنا هاي العملية؟؟
مع ذلك ،بشنو تذكرنا هاي العملية؟؟
البرمجة التفاعلية
البرمجة التفاعلية
البرمجة التفاعلية
البرمجة التفاعلية
البرمجة التفاعلية
️♂
️♂ تعريف مرعب ادري بس الزم نحط تعريف مو؟
يقال ان اصعب ما في البرمجة التفاعلية
https://gist.github.com/wisammechano/034269171b0339955a3af6265bc3e884
https://gist.github.com/wisammechano/a2c00d5ba6d6a6c1504fb93970aed24e
الزمن
Time
)Time-varying values (Events
Error
خطأ
احداث مختلفة (بيانات) مثال
Event Stream Complete احداثيات مؤشر الماوس بشكل number
مؤشر نهاية دفق االحداث
Observable
المرا َقب
ُ
Collection
كل البيانات القابلة للتغيير عبر مجموعة من البيانات واالحداث التي
الزمن ممكن تتبعها او مراقبتها تدفع بالتوالي
Pushed
Stream
يمكن ربط عدد مفتوح من
المراقبين لكل دفق بياني
Observers
V1
observer(v1)
Observer
المرا ِقب
ُ
Data Stream Function
observer(v2)
دالة تراقب التدفق البياني
V2
observer(v3)
observer(v4)
استقبال قيمة جديدة
V4
observer(err)
const observer = v => v + 1;
observer(done)
Time
الزمن
Subscription
االشتراك
Observer Object
source$.pipe(
filter(v => v > 2),
map(v => v * 2)
)
// output: 6, 8, 10
source$.subscribe(val => console.log(val));
وألنها غير تزامنية
)واالحداث فيها ترتيب زمني (عامل وقتي
يتوفر لنا ايضا بعض العمليات الزمنية
• Debouncing
import { fromِEvent, debounceTime, switchMap } from 'rxjs';
• Throttling const input$ = fromEvent(document.getElementById(‘searchInpt’), 'keyup');
• … // output: 6, 8, 10
input$.subscribe(val => console.log(val));
منو يستخدم هذا النموذج؟
االيجابيات
أسئلة ؟