In this lesson, we learn how to build the final feature of our user interface: how to use the cached network response to replace a suggested user when the user clicks on the 'x' close button for that user.
Is it possible to siplyfy the example by
var requestOnRefreshStream = refreshClickStream .map(ev => { var randomOffset = Math.floor(Math.random()*500); return 'https://api.github.com/users?since=' + randomOffset; });
var requestStream = requestOnRefreshStream.startWith('https://api.github.com/users');
Or var requestStream = refreshClickStream.startWith('click') .map(ev => { var randomOffset = Math.floor(Math.random()*500); return 'https://api.github.com/users?since=' + randomOffset; });
Is this correct ?
Correct, there are multiple ways of achieving the same behavior. The code presented in the video is the easiest for beginners to follow what is happening.
Why you didn't model stream to : responseStream.flatMap(function(listUsers) { return Rx.Observable.from(listUsers); }).subscribe(function(user) { console.log("user ->"+user.login);});
Hi Andre, Can I merge more than 2 Observables? Thanks
Hi Oren, yes you can: Rx.Observable.merge(a, b, c)
I like the series but it raises a ton of unanswered questions. For me, primarily,
Thanks!
Got this working on v5 using switchMapTo
operator instead of the switchLatestFrom.
@andrestaltz refreshclick.map(ev => null) executed in createSuggestionsStream and refreshClickStream.map(...//which returns URL to get the user) are passed the same event every time refresh is clicked correct? So they are two different streams consuming same "click"? what guarantees that null is always returned first before the actual result? the async nature of the fetching user? what if we are returning the user from cached array? Will still null be returned first?
There are different ways of accomplishing this, and better ways where we wouldn't have race conditions. In this case, because it is an introduction only, I went for the simplest option where we rely on the fact that user fetching will be asynchronous and click reactions are synchronous.
ok thanks Andre. can you please give me pointers for further reading regarding the race condition avoiding operators and ways. may be resources which explain such gotchas and possible ways. Ofcourse I will be continuously following all the courses here and elsewhere but getting this from "horse's mouth" will be best way to go about this.
If you haven't yet, Watch the other courses on RxJS here in Egghead. I also plan to release the course about flatMap and similar operators, which are useful for many kinds of chaining and dependencies among observables. These are ways of handling race conditions as well.
Wow.... this was the point I started to think in streams. Making those marble diagrams was extremely useful. Especially when you created the result stream first, and tried to figure out how could we achieve that.