ΠΠ±Π·ΠΎΡ
ΠΠ° Π²ΡΠ΅ Π²ΡΠ΅ΠΌΡ, ΡΡΠΎ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Angular, Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° RxJ, ΡΡΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΎΡΡΡΠ΅ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΡΠ΅ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΠ²Π½ΡΠ΅ ΡΠ΅ΠΌΡ, Π½ΠΎ Ρ Π½Π°Ρ Π²ΡΠ΅Π³Π΄Π° Π΅ΡΡΡ ΠΎΠ΄Π½Π° Π³Π»Π°Π²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° β ΡΡΠ΅ΡΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΠ°ΠΊ, Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΡΠ΄Π΅Π»ΠΊΠ° Π΄Π»Ρ Π²Π°Ρ, ΠΌΠΎΠ³Ρ Π»ΠΈ Ρ ΡΠ΅ΡΠΈΡΡ Π²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ? π
π ΠΡΠ°ΠΊ, Π² ΡΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°?
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ»ΡΡΠ°ΠΉ: Ρ Π²Π°Ρ Π΅ΡΡΡ Π’Π΅ΠΌΠ° ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠΎΡΠΌΠΈΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΡ.
private readonly data$ = interval(1000); public ngOnInit(): void { this.data$.subscribe(console.log); }
ΠΠ°ΠΊ ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΡΠ΄Π΅Π»Π°Π»ΠΈ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅, Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½Π° Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ. ΠΠ½Π°ΡΠΈΡ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ Π΅Π³ΠΎ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π°Ρ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π·Π΄Π΅ΡΡ. Π Ρ ΠΏΠΎΠΊΠ°ΠΆΡ ΠΈΡ Π²ΡΠΏΡΡΠΊΠΈ.
Π ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΈ Π΅ΡΠ»ΠΈ Π²Ρ Π΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΠΎΠ΄Π½Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΡ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ΄Π° ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΡ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π·Π΄Π΅ΡΡ
@AutoUnsubscribe() public someObservable = interval(1000);
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ AutoUnsubscribe ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π²ΡΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ Π² ΠΌΠ°ΡΡΠΈΠ², Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° β Π²ΡΠ·ΡΠ²Π°Π΅Ρ .unsubscribe() Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΌΠ°ΡΡΠΈΠ²Π΅.
Π§ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ?
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
ΠΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π²ΡΡ
ΡΠΈΠΏΠΎΠ²: Observable
ΠΈ Subscription
@AutoUnsubscribe() public someSubscription = interval(1000).subscription(); @AutoUnsubscribe() public someObservable = interval(1000);
Π’Π°ΠΊΠΆΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠΎΠΊ.
public ngOnInit(): void { this.someObservable.subscribe(); this.someObservable = interval(150); this.someObservable.subscribe(); }
ΠΡΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ Π±ΡΠ΄ΡΡ ΡΠ΄Π°Π»Π΅Π½Ρ.
ΠΠ΅ΡΠΎΠ΄Ρ
ΠΠ΅ΡΠΎΠ΄Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Observable
ΠΈΠ»ΠΈ Subscription
.
@AutoUnsubscribe() public getObservable(): Observable<number> { return interval(1000); } @AutoUnsubscribe() public getSubscription(): Subscription { return interval(1000).subscribe(); }
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡ Π΅Π³ΠΎ Π³Π΄Π΅ ΡΠ³ΠΎΠ΄Π½ΠΎ, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ ΠΈΠ»ΠΈ ngOnInit, ΡΡΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π΄Π΅Π»Π°ΡΡ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ.
public ngOnInit(): void { this.getObservable().subscribe(); this.getSubscription(); }
ΠΡΠ΅Π»Π΅ΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅ΠΌ ΠΎΠ΄Π½Ρ Π²Π΅ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΅Π΅ Π³Π΄Π΅ ΡΠ³ΠΎΠ΄Π½ΠΎ, Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΡΡΡ ΠΎ Π½Π°ΡΠΈΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ°Ρ .
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΡΡΠ΅Π½ΠΈΠ΅. ΠΡΠ΅ ΡΡΡΠ»ΠΊΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π½ΠΈΠΆΠ΅ π½
Π’Π΅Π»Π΅Π³ΡΠ°ΠΌΠΌΠ°: https://t.me/Nillcon