• Nem Talált Eredményt

Dr. Bilicki Vilmos Szoftverfejlesztés Tanszék AngularRxJS

N/A
N/A
Protected

Academic year: 2022

Ossza meg "Dr. Bilicki Vilmos Szoftverfejlesztés Tanszék AngularRxJS"

Copied!
46
0
0

Teljes szövegt

(1)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Angular RxJS

Dr. Bilicki Vilmos

Szoftverfejlesztés Tanszék

(2)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Az előző előadás áttekintése

4Reaktív űrlapok

4Sablon alapú űrlapok 4Űrlap validáció

4Dinamikus űrlapok

2019. 03. 12. Webfejlesztés keretrendszerek 2

(3)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Áttekintés

4Aszinkron programozás 4Callback

4Promise 4Generator 4Async/Await 4Observation

2019. 03. 12. Webfejlesztés keretrendszerek 3

(4)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Aszinkron programozás

4Fontos aspektus

■ A felhasználói események aszinkronok

■ Erőforrások elérése a böngészőből és a szerver oldalon aszinkron

■ Időben eltolt futtatás

4JavaScript

■ egyszálas

■ nincs eszköztár a párhuzamos futás kezelésére (pl.: zárolás,…)

2019. 03. 12. Webfejlesztés keretrendszerek 4

(5)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Aszinkronitás

4Futás befejezésig

Az adott kódrészlet nem szakítódik meg

Addig fut amíg át nem adja a vezérlést (return)

4Esemény hurok

A szálak eseményekkel kommunikálnak

egymással

Nem férnek hozzá egymás memória területéhez

Nincs rá garancia, hogy mennyi idő múlva kapja meg valaki az eseményt

2019. 03. 12. Webfejlesztés keretrendszerek 5

(6)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Példa

2019. 03. 12. Webfejlesztés keretrendszerek 6

(7)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Megoldás

4Callback

■ Hívj fel ha végeztél

4Promise

■ Itt a ketyere megszólal ha végeztem

4Generator

■ Kétirányú kommunikáció

4Async/Await

■ Generator egyszerűsítve

4Obeservable

■ Sorozat

2019. 03. 12. Webfejlesztés keretrendszerek 7

(8)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Aszinkron programozás

4Megoldásmódok

Callback

Egyszerű a szinkron kódhoz közelálló megoldás:

Promise, Future

Egy proxy THEN metódussal

Observer

Rekatív programozás

Webfejlesztés keretrendszerek

(9)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Promise alapokon

2019. 03. 12. Webfejlesztés keretrendszerek 9

(10)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Observable alapokon

2019. 03. 12. Webfejlesztés keretrendszerek 10

(11)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Összefoglalva

2019. 03. 12. Webfejlesztés keretrendszerek 11

(12)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Callback

4Klasszikus módszer az aszinkronitás kezelésére

4Regisztrálunk egy függvényt amit meghívnak ha befejezték a munkát

■ Ez általában anonim függvény

■ A Callback az eseménysorba kerül (valamikor megkapja a szálat)

2019. 03. 12. Webfejlesztés keretrendszerek 12

(13)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Hiba-először

4Error-First Callback

4Mivel problémás a hibakezelés ezért először megnézi van-e hiba

2019. 03. 12. Webfejlesztés keretrendszerek 13

(14)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Callback hell

4Pokol piramisa

4A program állapota a komplexitás miatt átláthatatlan lesz

4A programozó a sorok sorrendjét a végrehajtás sorrendjének veszi

Webfejlesztés keretrendszerek

(15)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Callback megoldás

2019. 03. 12. Webfejlesztés keretrendszerek 15

(16)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Promise

4 A Callback problémáit próbálja kezelni

4 Garantálja, hogy a callback-ek mindég ugyanolyan módon determinisztikusan kezelődnek

Nem hívhatja meg többször

Nem lehet egyszer ilyen egyszer olyan eredménye

Egy eredménye lehet

4 Az aszinkron függvény egy Promise objektumot ad vissza

Teljesített (fulfilled)

Elutasított (rejected)

4 Mivel objektum ezért továbbadható

2019. 03. 12. Webfejlesztés keretrendszerek 16

(17)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Egyszerű Promise

2019. 03. 12. Webfejlesztés keretrendszerek 17

(18)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Promise objektum

4 resolve/then - callback 4 reject/catch – callback 4 resolver

2019. 03. 12. Webfejlesztés keretrendszerek 18

(19)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Promise állapotok

4A Promise objektumon belül van tárolva

Pending

Fulfilled

Rejected

4Miután a pending állapotból kilép az értékei már nem változhatnak

4Ha egy sikertelen műveletet újra akarunk kezdeni az egy új Promise lesz

Egy próbálkozása leírója

2019. 03. 12. Webfejlesztés keretrendszerek 19

(20)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Promise

4Állapot átmenetek szabályozottak 4Resolve != Fulfill

■ Egy argumentummal meghívva -> fulfilled

■ Ha egy Promise-t adunk át akkor ezek kapcsolódnak

2019. 03. 12. Webfejlesztés keretrendszerek 20

(21)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Promise belső állapotok

4A state és result belső állapotok, nem férünk hozzá

4Erre használhatjuk ezeket a metódusokat:

■ .then

■ .catch

■ .finally

2019. 03. 12. Webfejlesztés keretrendszerek 21

(22)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Promise láncolás

2019. 03. 12. Webfejlesztés keretrendszerek 22

(23)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Promise láncolás

4Minden then hívás egy újabb promise-t ad vissza

2019. 03. 12. Webfejlesztés keretrendszerek 23

(24)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Több .then egy Promise-hoz

2019. 03. 12. Webfejlesztés keretrendszerek 24

(25)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Végrehajtási sorrend

4Resolver – szinkron

4Then/catch - aszinkron

2019. 03. 12. Webfejlesztés keretrendszerek 25

(26)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Promise visszaadása

2019. 03. 12. Webfejlesztés keretrendszerek 26

(27)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

.then

2019. 03. 12. Webfejlesztés keretrendszerek 27

(28)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Promise API

4Promise

4promise.then 4promise.catch 4Promise.resolve 4Promise.reject 4Promise.all

4Promise.race

2019. 03. 12. Webfejlesztés keretrendszerek 28

(29)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

async/await

4Speciális szintaxis, Promise (Generator) van a háttérben

■ Async – Promise-t ad vissza

■ Await - ”megállítja a futást”

2019. 03. 12. Webfejlesztés keretrendszerek 29

(30)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

2019. 03. 12. Webfejlesztés keretrendszerek 30

.then vs async/await

(31)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Generátor

2019. 03. 12. Webfejlesztés keretrendszerek 31

(32)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

A Generátor iterálható

2019. 03. 12. Webfejlesztés keretrendszerek 32

(33)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Generátor

4Igény szerint több visszatérési érték, egyszerre egy

■ Observable – aktív (nem vár senkire sem)

■ Generátor – passzív

2019. 03. 12. Webfejlesztés keretrendszerek 33

(34)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Aszinkron generátor

2019. 03. 12. Webfejlesztés keretrendszerek 34

(35)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Reaktív programozás - RxJS

4 Aszinkron adatfolyam kezelés

Esemény buszok

Esmény kezelők

4 Bármiből gyárthatunk adatfolyamot

4 Folyamon alapuló logika

Egyik folyam lehet egy másik folyam forrása

Összeolvasztahtunk több folyamot, …

4 Folyam: a bekövetkezett események időben rendezett folyamatos listája 4 Az érték halmaza:

Normál értékek

Hibák

Folyam vége

4 Ezen eseményeket aszinkron módon kezeljük:

Függvény a normál értékekre

Függvény a hibákra

Függvény a végére

Webfejlesztés keretrendszerek

(36)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Reaktív programozás - RxJS

4Folyamokra fel lehet íratkozni 4A folyamokat “megfigyeljük”

4Megfigyelő tervezési minta

Webfejlesztés keretrendszerek

(37)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Reaktív programozás - RxJS

4A folyamok általában megváltoztathatatlanok (immutable)

4Új folyamok előállítása:

map – új folyamot állít elő a megfelelő F leképezéssel

filter – kiszűr adott eseményeket

scan - aggregáló függvénnyel minden beérkezett értéket aggregál

Webfejlesztés keretrendszerek

(38)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Reaktív programozás - RxJS

4Dupla kattintás:

■ 250 ms –

esemény csend alapján

csoportosítjuk

■ Összeszámoljuk

■ Kiszűrjük

Webfejlesztés keretrendszerek

(39)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

RxJS

4Obervables

■ Push alapú lista

■ Adat forrás -> adat nyelő (felíratkozott lista tagok)

4LINQ

4Schedulers

2019. 03. 12. Webfejlesztés keretrendszerek 39

(40)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Observables

2019. 03. 12. Webfejlesztés keretrendszerek 40

(41)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Observables

4Forró vs. Hideg (Hot vs Cold)

■ Forró

– Amennyiben senkit sem érdekel akkor is fut a háttérben

– Amikor valaki fleíratkozik a legutolsó értéket kapja meg

– Megvan osztva a fleíratkozottak között

■ Hideg

– Csak akkor kezdi el az értékek kiadását, ha valaki felíratkozott rá

– Nincs megosztva a fleíratkozottak között

2019. 03. 12. Webfejlesztés keretrendszerek 41

(42)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

RxJS operátorok

2019. 03. 12. Webfejlesztés keretrendszerek 42

(43)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

RxJS operátorok

2019. 03. 12. Webfejlesztés keretrendszerek 43

(44)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Időzítők

4A futtatandó feladatok mendzselése

■ Adat struktúra

■ Várakozási sor

■ Futási kontextus

■ Időzítés

4Virtuális idő

4Időzítő típusok

■ Standard

Adott időpontban Adott időpontig

■ Rekurzív

■ Periodikus

2019. 03. 12. Webfejlesztés keretrendszerek 44

(45)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Áttekintés

4Aszinkron programozás 4Callback

4Promise 4Generator 4Async/Await 4Observation

2019. 03. 12. Webfejlesztés keretrendszerek 45

(46)

UNIVERSITY OF SZEGED Department of Software EngineeringUNIVERSITAS SCIENTIARUM SZEGEDIENSIS

Következő előadás

4Bevezetés: NgModules

4JS Modules vs. NgModules 4Gyakran használt NgModules 4A képesség modulok típusai 4Entry Components

4Feature Modules 4Szolgáltatók

4Singleton Szolgáltatások

4Képesség modulok laza betöltése 4NgModulok megosztása

4NgModule API

2019. 03. 12. Webfejlesztés keretrendszerek 46

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

UNIVERSITY OF SZEGED Department of Software Engineering VERSITAS SCIENTIARUM SZEGEDIENSIS..

UNIVERSITY OF SZEGED Department of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS6.

UNIVERSITY OF SZEGED Department of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS.. Mobil alkalmazásfejlesztés - UI alapok

UNIVERSITY OF SZEGED Department of Software Engineering IVERSITAS SCIENTIARUM SZEGEDIENSIS.. Mobil alkalmazásfejlesztés -

UNIVERSITY OF SZEGED Department of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS.. Mobil alkalmazásfejlesztés -

UNIVERSITY OF SZEGED Department of Software Engineering SITAS SCIENTIARUM SZEGEDIENSIS setMinimumLatency(long minLatencyMillis). ● A befejezés előtt megvárt minimális

UNIVERSITY OF SZEGED Department of Software Engineering SITAS SCIENTIARUM SZEGEDIENSIS.. Mobil alkalmazásfejlesztés

UNIVERSITY OF SZEGED Department of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS.. Apple Swift alapú