Ale co do fetcha.... dlaczego nie zrobiles z niego strumeniu? Nie powinno sie tego robic?
Fragment:
.flatMap(() => fetch('//jsonplaceholder.typicode.com/posts/1')
.then(response => response.json())
)
nadal produkuje Observable,
moglibyśmy napisać tak:
.flatMap(() => Rx.Observable.fromPromise(
fetch('//jsonplaceholder.typicode.com/posts/1')
.then(response => response.json())
))
ale nic by to nie zmieniło w tym przykładzie, bo flatMap
i tak wyciąga z obu wersji wartości i produkuje z nich jeden Observable emitujący już zresolvolwowane dane.
Czy tutaj po prostu nie ma potrzeby bo zakladamy ze nie filtrujemy nic.
Filtrować nadal możesz (nie wiem czy dobrze rozumiem co masz na myśli):
const button = document.getElementById('example')
const exampleEvent = Rx.Observable
.fromEvent(button, 'click')
.flatMap(() => fetch(`//jsonplaceholder.typicode.com/posts/${rand()}`)
.then(response => response.json())
)
exampleEvent
.map(result => result.title)
.filter(title => title.includes('qu'))
.subscribe(
result => console.log(result),
error => console.log(error)
)
const rand = () =>
Math.floor(Math.random() * 10) + 1
CodePen: https://codepen.io/caderek/pen/wdwwdo?editors=1011
Co jakby fetch byl strumieniem? Czy jest mozliwosc ze pod clicka podepne akcje w foreach i w strumieniu z fetch'a tez podepne akcje jak sie wykona? Chodzi mi o hipotetyczna sytuacje.
Napisz jaiś pseudokod co masz na myśli.
Troche nie rozumiem strumieni pod tym wzgledem ze o ile websockety moglby pasowac mi terminologią do strumieni bo cały czas otrzymujemy dane z serwera to ani click ani http request nie pasuje mi do tego. One bardziej wygladaja na jednorazowe akcje niz na ciąg.
Co do click - źle na to patrzysz, eventy bardzo naturalnie wpasowują się w definicję strumienia - event może zachodzić wielokrotnie - możnaby powiedzieć, że w tym przypadku "serwerem" jest uzytkownik.
Co do Observable.fromPromise
- mozesz na to patrzeć jak na producera streamu, który zawiera jeden element (resolved value) i się kończy. Jest to wraper, umożliwiający skorzystanie z dodatkowych metod udostępnianych przez Rx'a.