About the talk
Please note that this is NO workshop for a beginner. Everyone is welcome but people with basic skills may get stressed fast.
The web changed a lot in the past years, more and more applications provide UI’s that are heavily interactive and often also include some background tasks.
RxJS serves a very elegant way to compose events and async actions, make your code more robust and extensible.
In this workshop, you will learn some advanced techniques and patterns with RxJS! Expect topics like complex subscription handling, performance optimization, managing background processes, event-sourcing, and QCRS.
More details in the description.
The web changed a lot in the past years, more and more applications provide UI’s that are heavily interactive and often also include some background tasks.
In comparison to the past years, frontend developers have to deal with new architectural problems and challenges.
Not only things like a service layer and MVC found it’s way into the frontend but also database-like structures have to be managed, updated and read from.
Especially managing data structures and side effects are one of the harder problems.
In this workshop, we will start with a pretty tricky problem. We have to create a heavily dynamic component and will not be able to find a clean solution.
By applying some best practices for
– complex subscription handling
– orchestrate rendering and UI interactions – apply a reactive microarchitecture
– performance optimization
We will also find solutions for the state management part of the problem by applying backend architectures and patterns to the front end.
Topics are the theory and praxis of:
– Event-Sourcing – CQRS
Step by step descriptions and source code/slides are provided for everyone that is into further learnings aside the workshop.
Leverage the power of reactive programming and master heavily dynamic UI’s.
In several sections we will learn:
• complex subscription handling
• orchestrate rendering and UI interactions
• apply a reactive microarchitecture
• performance optimization
• the theory and practice of CQRS and Event-Sourcing in the frontend • how to separate rendering and UI interaction
• dynamically compose event patterns
Follow us on twitter https://twitter.com/ngconf
Official Website: https://www.ng-conf.org/
What's the agenda today? It's a pretty interesting problem. I was contacting the company they had to redo pick application was only one screen was selling so one screen was bringing in the money for more than two and a half years. It took me some time to realize the problem and disruptive is basically the same problem but really boils down to the essence. I will introduce you to something at iqor reactive microarchitecture. It's basically a way how to structure your coat how to structure one single file or more internet bill introduced into some thick and architecture.
Have you talked about even sourcing insecure as maybe many of you know, those architectures from the bacon to develop light on spec and architecture in the front end. After this reveal about orchestrating rendering in the UI and then how to do performance optimization. Maybe some of you know me already. My name is Mitchell and strainer and Consultant Group to focus on angular rxjs and State Management. If you have any questions, feel free to ping me on one of my channels. Okay, what's the problem?
Rip this user interface user interface contains this number 0 in this is basically our state. It's not working. Since we have some pecan processors that are running on this page and then this very simple example is just a tick. And then we have some more options for user interaction and all those three things are combined together in one single page. Let me switch to the cold and show you the problem. So this is the link to the Stockbridge that you all have
in the basic invitations display a number when I click Start a pulse the first task to the tasks are listed here is to start the counter and then reset the counter if I click Start again. I guess this is not the hardest part for you. Let me increase the font size. amazing This can be closed. Groot increase Okay, in this application we have the class that is called Counting. This class basically holds all the references to the buttons and provide them over extreme. I can configure these cannot see Randy just called County DUI. And if
you look at this line here, I can say counter light. Button start button pause internet can use some pipes on those buttons the first try to implement this timer. When I click Start I am it's true when I get stopped by it falls. And then I use them. Switch me up operator. And I take the East taking state. And then I returned the intihar. nishikant estate and heuristic Bixby Note 6. The crew cleaning Fort Story to light true. Thanks for the feedback. It is here, I guess.
easy flight light boom. Okay. Good morning. broccoli Okay, but it's it's super. import switch map and safe and Rhonda cold and now we should see this timer updating so I could start and nothing happens. Temperature to check stupid speaking. I return this interval as I return an observable. It is called Never and never is basically never meeting of value and never completing. And it is also imported from the rxjs directly. Now we have the timer I can post a timer until it stops. And if I click the button again, it starts again from
zero in the first sight series you have to implement those. Peeking but you should see if you click start again. You should continue from the number. So if I click pause here, and the number is 78 and then click start again to continue from 78 and this example is basically * 4. Text minutes. We have 12 minutes and you can try to implement a solution. And if you have any questions, I will help you just raise your hands and then I come to your chair and take you.
what is the What is the NF Christian you let me repeat it quickly. Maybe I thought of you. The problem. The problem is we have to kick your the event 52nd that can cost a ticket if I restart the ticket in his box from cereal and the goal would be to start from the post number. So basically you have to maintain the states of the counter. Your phone for more minutes, and then I will show the solution or shoulder wrong solution. Okay. Let's try to Salty's. So what did lots of people do
is they introduced? Available outside of our streams I call it state. 4 count they said it to zero and then they change. Change the value of those of this variable North consulate. And you taste basically the value of this variable and try to maintain the state of what is variable. This is a really bad approach because everybody can change this variable can influence the value of this variable in this is so nothing that we want to do. So we need a more
functional way to maintain the state. In one way to do it is to Justus King operator. So I can come and sit here. Ken and the skin operator is very similar to an array reduce. It takes an accumulator in the next item and what I do I just use the accumulator. And I increase the accumulator. If I keep safe and I refresh my page. I can pause it and then I can resume the speaking from 10. So I maintain the state in the more functional way. What is the second exercise?
concert and start again from the post number. In desert exercise is more or less the hardest exercise of this whole family Workshop. We have to set two buttons it's here and then we have two number if I click the sethupathi. I received the last day of this input box and take goal is to set the number of the counter to this specific value no matter if it is or if it called if it is supposed. the main problem of this whole exercise I would say we have another
15 minutes to try to solve this problem. If you search for Solutions in the style here, I have every single step as a separate file. And if you missed something you can just copy the style and place it in your index TSN. Turn your own exact same cold places I am. I just copy and paste the solution. One tiny hint if you try to implement this you saw that we use the functional approach to maintain the state of the count. This would be also the goal for the SEC
40 step. You don't use an external variable that you mute muted. And I'm sure it will be frustrating for a lot of people song. Don't take it personal. So the question was used to but instead to a meeting the value of the text box. Yes. So if you click the button and you subscribe to the set to observe you will receive the video from the textbooks. Okay, let's go Wang. So what did I do to solve this problem? It's supposed to be really smart Cold Case. I started to
organize the cold NW percent do something recorded reactive microarchitecture. This is a my my approach to organized group and structure 3070 Horrocks related There are six different groups that I try to divide the code into there are constants Facebook servers side effects subscriptions helpless infant costume operators are custom methods. However, you want to call it six different groups help me and hopefully also you to maintain your cold better. Have you been extensive and also easier to find stuff?
The book about Constance was our constant rate constants is very easy to grasp. These are all static values or chasing files are examples of interval data create. This is a constant or all references to the u i r constants sometimes in a separate file, but in many cases it is good enough to have it at the top of your arm. The second thing that I do inside group. In something that I called base observers and feed the group of fibers contain different things. First of all, the Arcturus episode of a source of servers are the purest of service that you can have in your application
The Observer The Observer something that is not matched with something else. Then you have interaction of several prestigious is the parking ticket self the state of servers. For example, the number of the count the current count if it's a pure things. And then you can head and not the top group that I Court intermediate of servers in this is basically a combination of one or many of the above. So a button that initialize something else or to make it to related to this example to
set to Partners basically intermediate up celebrate the button click Returns the last day of the input box intermediate take me of side effects and you have two or three different things that you can handle inside effect. You have user interface input and also are things that trigger for exempt rendering of the few. After basically. Something and then you have UI output. And you will use this URL to to initialize some other actress. And then there are background
processes. These are things that are not directly influenced by the user interface. And for example, you can even HDPE request that I would quarterback control City to the report background process, but still it is and or or kick in this example is a background process. Can you have subscriptions and a very nice way to end a subscription is too pooped or your side effects in tip operators? And then name your streams like when the value or update State and all the side effects are in those observers hidden in the operator and
I used to merge Creation in together in higher Dose side effects. This is very good because then I can use a single take until pipe that takes a trigger and if this trigger is court, I can automatically unsubscribe from all my side effects in one senior place so I don't take until implemented. The very good example would be if we are in a Negra framework we have this Angie on this Troy life cycle who can deliver this life cycle is triggered. I would definitely unsubscribe from all my
side effects. Is I said you could do it in that way. You have a Sirius subscription in your whole file and you have all the side effects nicely groups together and you can easily read which side effect you to you and when you unsubscribe from those. I'm free book some good Frameworks can also take over the subscription for you. an example for a very good pre-med Angela before you But think about if you use it because in many cases is not is not trivalent. You maybe want to control the subscription directly and don't hand it over to a sink.
Put the newspaper functions in HIPAA functions are all the functions that are not directly related to your page, but it's a commonly used logic and it is a very good idea to extract dose. things into a separate file Can get custom operators in tier two groups. I have creation methods methods create mean observable and I can also have custom operators in total steps are in separate files in case you have a 5 / operator and then you can really easy and them are grouped them or bonds of them.
Nets basically my reactive architecture and I will implement the snow into my coat face and to save some time. I will not do it manually. We just copy paste the solution and you can also just copy paste the solution. The solution is called series 3-1 microarchitecture, and I open it. Replaced it in this is not charging any problems, but we have now a very nice structure. Let me zoom out a little bit too forgiving a good overview. If not, very nice structure where we can put the different code Snippets and it is way more
organized. He's basically helped me to realize we are the problem is of what the problem is in general. what's not the solution is I said so 2 solstice I was reading a lot of statements when things that's at some point. I ran into some articles from the back end in one article or one topic was about event sourcing to let me introduce you quickly to even sourcing. What is even sourcing. I I have no clue. So I asked Martin foreign tilted sourcing is capturing oil changes to an application in a sequence of immutable events. Talking to think
about even sourcing. Another description modeling State changes in beautiful sequence of events for this event. You cannot change and you can basically think about your bank account and you add someone you re-drill some money and in the end if you calculate the sum of all you're adding sand in Reef drawings you would end up with the current amount that is on your bank account. Did you can basically? Store the value of your bank account in this sequence of immutable events.
But instead of mutating your state and we did it again for a long time with relational databases. We were always mutating or state we switch to another storage and be switched to this sequence of immutable events could be in a list that collects all your or events that you tired against your system. And if you replay all those events you end up with the current state. Difference between those two setups is that you will always be able to reproduce your state. think about Bank transactions
to be able to reproduce every single change that you did you had to do snapshots from the whole database for every single transaction, right, which is crazy if you store a list of all your things to do at Peachtree at 80% and replay it you will always be able to to revert to a specific state. And this is basically the main at the event sourcing having a reproducible state and don't you take your your state? The second thing that I ran into verse a thing that is called cqrs, very responsibility segregation.
Very long name? What does it mean SI again has no clue. I asked why and he said every method should either be a comment or Eric Berry, but not both. And at this moment it clicked because the problem that we try to solve is very similar. We have to stick that topped its the state and read the states to render it have to be to stay the same when we try to edit and change it. And I'm pretty sure that Donald a lot of people inside that forced the previous problem. Is there someone inside salt it ends up? Perfect
keyboards that took me a long time to understand this problem and have come up with a smart solution to let's talk a little bit more about cqrs and understand the implementation architecture behind it separating in applications responsibility into two parts. Commence tooties to death update your timer stop your timer poster timer in berries. Receiving the current states that number of tick or whatever you try to manage architecture that separated into two separate ways.
It could be also over only over an interface but also really completely disconnected for example you heifer Relational database only one side and then something like elasticsearch or fireplace on the other side. Is architecture Source also a decade or discussion. How many if you had the discussion before you started poor chick should be good with a relational database and have passed right reads with a nosql object-oriented database in his past reads architecture. You can have
both at the same time. Reading and writing in our specific case. We will use this architecture. Who made the choice to restore discount value and also see if I have to state? Let me show you how to implement it. Okay. I hope you can see you today. I can barely read it. Tsum Tsum Tsum Okay, so this is all wrong solution basically take everything and delete it. Is gone. Okay. How come you came in like this talk to Steven sourcing even sourcing is like sequence of immutable
events in what are the events in our case the clicks the changes of the input box dangerous Envy. We have to find a way to collect all of those inputs pan with them together and find a way to store them. 50cc easy to do that mean brickseek copy a snippet sourcing Okay, what did I do? Walking tours to and all the other buttons listed here in Vaughan merch operator and every single action is met to an object and object that represents for me an event or basically a comment. Diet food is teaching, and I can set the volume to
true or false I have account up comment. Countdown the tick speed in the consti And if I subscribe to this Observer be here. Can open up the contour map is not defined. Give me a second. chica button I should see something. controller commands Rent a car. Give me a second. Text Mark Zuckerberg. Very good spot. I receive all the different comments that I created. Benzene or case that fits 2pacalypse now, that's it count to the value of 10 or 11 or whatever number I have here and I can take this list of Season
Sports number. For example, I can use it show replay operator and whenever I subscribe to it that will replay all the different comments that I triggered over my user interface. The second thing would be storing all those things in Chex oil collector State summer Did I bury my state simple sing a trust? Create something that is called. contest 8 encounter state is basically an observable that takes on my comments. So I start with my counter comments. Internet try to do something. I tried to cancel all the different interactions and
collect the current state. And I do this over the same operator that I used before the skin Operator Operator. Takes two different things. my English account estate at the end Then we have to accumulator in the next item is in my case. I can call the next item comment. It makes you more later. He's basically my state. Can you put the skin over time? Very nice. okay, and what I return is an object that spreads May split. And my comments in the basically over right?
a specific slice of this date with my comment if it's the one line, or I could also get rid of this one if I like and then I have this more kind of cold here and I test it and hopefully it works. Let me check. I have to subscribe to its investors. It's the same such a good point. unsubscribe to eat console.log how can I should work and you should see that we can basically See all the different changes and whenever I click another button this object ear change and increase I'm going to kick all the different buttons in the end the end up with a chick that contains
the whole state my counter State my account. If this is basically how much I ate or abstract from my current count kicking states that use my counter currently taking or is it past and then my tick speed the interviewer of the stick and everything is collected in this object. 2 start with the horse that I could at another operator and I can say start with if your I apply the initial account to state. He's basically. Tyrus the initial counter State when I subscribe
and then it can cats the rest of the observers to it is basically an operator from the Concord Group. Did you come catching it? the first baileywick the rest of your screams Can you talk to this and I restart the application? I see. I immediately have the whole state and now we only have to serve remaining problem when I have a new subscriber. The dentist is called component in a later date. I want to retrieve the last the last state that was admitted because otherwise I have to wait for the next state change to know what the current state is very hard and
operator Discord. Sherry play can diet cure once I will replay the most recent value. the most recent animation lyrics Perfect a list of commands and we have to stay till 7 or that I could bury I could put exempt Rick Barry the current count by Chester playing and not a pipe. Innokin Vape the whole state to Chester state. Antenna Shooters receive only the number 30 minutes perfect to take to set in a C10 you find Christie's to I don't know 42. I see the number 42. So this is basically very
interested in a very specific slice of the state accurate account. Pixel what we did this we implemented. A very nice way to him to Staples this application. We can handle it if it is ticking or not. We can handle all the counts to the number that I increase we can we can store the Speedster in Tavares. Florida sings. Go back to the previous problem and try to solve it before new implementation. Delete this Sakura is commutative celebrity secure had a copy of the
part of the solution to save some time. So what you can do now. Is creating some observers that basically Berry or state for some something. For example, we have an observable that is called count that turns the current count an observable to discard is picking that Returns the current state of is ticking and to be a little bit more different things. iflix American apply an operator is Court distinct Auntie change. Which means I only emits the next value of this Observer if there is a change if I change from 0 to 0, I will not admit the second time in so I can save some emotions
and if we don't still make the whole process more stable. Let me also Imports those two operators here. Very good and what I can do because I use those two operators to pluck or operator in the distinct operator many times in a row. I could create custom operator. All the fit operator is super easy. I just have to Implement a function that looks like this function it takes an observable and returns an observable. And that's it. So I can go into my function. And then I can return the received observable, but
I can also apply some operators on this web server and then I can name. Play magic tricks improve. very or whatever. Set me free teen porn. rickets wrong okay, and then I can apply these custom operator to all my 7 + that I created so here here and then I just put this life. Prince of this could be his teaching. This could be my account. Traffic to configure River operator. I can wrap it in all the clothes of closure function and then I can take this. name for example
and practice Pacific part of my state I can put this. It should work at the cricket test if it is still working. Perfect. It should work now. Let me subscribe through that you sticking. I'm missing you break it somewhere. You know. Maybe I can copy the solution for this to intermediate of servers. It comes at 10. 110 Okay, now we can receive true-false. We created a custom Operator Operator to Dorset custom configure operator. And now we can go back and try to solve the initial problem. Let me
5th Street of the solution here observable year to Discord count Get our side effect, and if I go up up up. Here we go. Now we can say I listen to that you sticking State and whenever my is ticking stat changes, I do something and then I can apply to previous approach I can say I used to Which mobile operator? Which receives two is taking state which is true or false and whenever my is taking state is true. Then I return my interviewer. The interval of the initial State and in this case, I use the static variable or a static number
200 NV will Implement a hint of or later. It is not sticking I return never. It's just timer. Okay. So this would be a mechanism that starts and stops a timer for bear is the state fair is my account. How can I increase the count? Will recruit increase the account over the states to Barton we know this already but we have no way to hide comments to our state programmatically to wish we need to implement some way to fire programmatic comments. And this is very easy, but I did seriously implemented new subject very simple
subject and then I used to observe other part of the subject and merged it into the other commands. And now I have to ability to fire a programmatic comment. Whenever I receive the next week, I want to hire the comment and basically increase the count and a kissy face which pick some steps we see the solution. So whenever I receive this pic I take the latest state. Take the latest state from my count of server in the form of the state. And then I can Implement a tip Operator
Operator. If you're too long a side effect, if Hep operator can take three different functions. the first function is Court, whenever the next value arrives the second function in the tip of Greater is called whenever they are or Tires in the search function that you can pass through the tape operator is called when the completion is fired. In this case. I used to only the first function and I fire this Method Man ever to next video. Of course, I setup a custom command a custom command that he was sister named count in sennett
increments the current count by 1. And if I did everything right it works. It is taking this means unable to initialize this interview and I can also pause it. I can restart it from a specific number in Northern best part if I click the set 2 button no matter if it is teaching or not. I can come to this number. If this is not possible before why is this not possible because we separated. You separated or reading and writing to the state into different channels basic a little different ways and then I just have to implement
my background process in peace background process the pitch in to buy basically fires another comment to my State Management very very clean and also scalable way to manage your state. Let's implement the rest of the features. Implement a completely Dynamic interval. So if you take a look at the user interface with the textbooks you're assuming 56 books in these textbooks specifies the interval of our timer and the other two Xbox accounts this specifies the number how much I increase or decrease the current state. Let's try to
implement it completely Dynamic background processes and let's start with the tick speed. Chipotle stock is I need another. Intermediate of cerebral that will transmit the current stick speed in the name it tick speed. I just be used to logic from before now. I have to fix split ends. Can you have an interesting problem in this case? we In this case, we start and stop the introvert whenever the value of his teaching changes. But now the problem is a little bit more difficult difficult. We have to reschedule another in Survivor
never disputed books changes or whenever that is taking State changes. Do I need to combine the latest values of those two observers and there is a very nice operator that is called combinelatest that enables us to do this. so combined latest Music Creation operator So you could use the cheer combine latest and I put in my two Observers. late latest my is ticking in my tick speed. and what I received now in this which map is not only one variable, but the school is real and what I do is I basically
Eustace Simplex to immediately separate variables is taking state. entity speed it's all I can use the sticks beat in place it here into my timer. I can type. Is Dick's Peterson number Noah countertops art? Expedia so it should work now that we can start our timer while it is ticking we can jump to specific number we can also do it when it is. If we interact with this input box here, we can increase the interviewer and it is way slower or we can decrease the value and then we have it for a pastor interval in pieces completely Dynamic note. It's a sort the changes in all logic. We're
really really pain. Just made some slight changes to implement this feature. And with the previous set of it would be basically not possible at all to implement this feature. It means I meant the last teacher. the last picture is changing the number of how much I want to increase or decrease the current stick. And this is also not very hard. I basically have to take in Houston with latest from operator. But in this case, I don't use to just the account I use the whole state. So instead of using count dollar I use
counter state is called against counter State you and this is called state. I am okay you I received the state and then in my comment I say. Then you count is basically the current account plus the number. I want to increase. I called it count. If not sure if this is a very nice name. Was never good at naming. Okay. Well you should see now is 50 cent of our we have to completely Dynamic kick and if I changed his number here I change. Turn on every ticket change it to a different I increase or decrease it to a
different venue. The last picture is Discount up and down button at the moment. We only count up. So let's also implements the count down feature in this is also very simple in the same line of code. I just Go here and I save whenever my state. contopulos true I take this step count if whenever it is forced I take this counties in markiplite with - 185 did everything right? Not sure we should see that I can basically increase the number. decrease the number
and every single step here is completely dynamic. And we can interact as much as we want. It is fully stable. We have no muted restate here and it's just so it is very very easy to scale to add more and more features in Dakota still maintain a bird in easy to read. so we have 16 more minutes left we can do a Q&A session. I could show you all the used operators and we can discuss all the different operators in detail with some diagrams. Well, you can try to implement it on your own. It's your decision. So maybe let's do a quick voting and
let's vote for either discussing operators and showing for looking to different diagrams. Let me quickly show you what I mean with diagrams. RX operators so maybe you know that I'm working on The Hobbit diagrams for exchange subpoena version of marble diagrams and Give you some example of what I mean with diagrams. I could show you for exam for the tip operator. Fix you scroll down. Tell some slides in here 200 something. Teresa Temple 3D sister operator and this is one way how the new operator could look like. In fact, I have even even better Charters
diagrams for tip. So this would be discussing all the used or the most important operators with those diagrams. And the other thing that you could do is you could do a Q&A session. So let's do a voting and the first vote is for looking at different operators in combinations with the diagram. How many of you are? Okay, I guess this is even though I win and tell me if you would do a Q&A session hands up. Perfect. So we do diagrams now even better. Bedrooms for the tip operator type of bread is a really really powerful operator and I guess not a lot of people know all the different things that
you can do with tip most of the people believe that is a very simple operator, but infect you can do a lot with it. Let me quickly navigate to my slides. model diagrams They responded wrote for you to do so if you know a really cool guy and I of course for tip to let me scroll down to temp. So this is an example for just using the first function as you can see that it receives FN FNX the function here and I guess most of the people believe that you can only pass this one thing and function that executes whenever and next value arrives.
You see that there is a gray Arrow. It's not really good with your pathetic riera that goes directly from the yellow circle to the orange circle. And then there's a black arrow that ends in this function. This is basically symbolizing that tap triggers are side effects. Is a text to Art to other that you can piss you can visit get it past three different function function function one executes on every value function executes on an error. So this excerpt is the symbol with an arrow happens and then function to is
executed and same goes for the search parameter for function free and country has executed the never met up server brute complete and you can see here to complete symbol and then we executed a search function. there is another very important operator that is called Skin and Ken is also very interesting. Let me quickly go to my skin operators here. 4 minutes Let's go to this one. So this is Ken Ken is very very similar to every reduce and scan takes who sings IF function and then an initial. Ethan in this case, I passed 02 series or initial
State and what I do is adjust calculate the sum the green stream. The inputstream is basically an interval of numbers from 1 to infinity and whenever the next number arrives I want to calculate the sum and what happened to your internal east whenever the next number arrives the function if it is called. But this is not the only thing that happen if you can take a closer look with two arrows going down the first error goes down to the to the output Stream So after the time to calculate the new value, which is basically our accumulator
plus the next item yellow circle and is yellow circle is basically our internal state to actual letter itself. You can also use skin without the initial parameter and then you would basically use the first immediate event the volume to calculate. Something intent to admit. The bone is the first initial value. So you need a second run for if you don't use a initial. State is a very very powerful operator and it is reused in many many different other operators. For
example reduce very similar to skin insect reduce is nearly exactly as skinny as you can see. I also accumulate. Avengers you're invading my opposite of a bird completes. I it this value. So this is the big difference between reduced and skin. If you could take a look at the source code to realize that skin internally uses two different parameters reduce uses internal two parameters. Where is the operator to be used internally and he basically accumulate this value over and over
and then there is a second operator used that is called take place. the pic lost Texan and animator that specifies how many last values Yuri limit is the observable complete in this case we passed in one And whenever we complete and we see this here in frame number 16 be complete and then we fired his PO function. Incomplete emits the last value from the cash or yellow line. Here is our cash to be cash 136 and then you complete and then turn the Loft Duluth from the cash. This is basically what happens inside of the
reduce operator. Benton I guess in other very interesting operator Bostic combine latest operator. Let's switch to their combined latest operator. I guess combinelatest is here. Amazing version of combined latest and you may be compressed. What happens would I be a Savage related to him at least from my perspective better solution and the good stuff about these diagrams. Are you can also animate them or you can basically use Gucci slides to animate them and what we see here is a little broken animation, but it will still help us understand. We have an input stream and then we have to
input to stream that is basically our combined latest operator and look at this first mission visited a m. It's nothing only 5 Seconds. Are you are inputs to admit Civello? We have our tooth latest value since then I've committed the first value in the output stream, which is basically an array with two items. The first item is the last day you from the input stream warm into second item is the last ferry from the input stream to every next mission received it
this is Ray is emitted. So this is basically what combine latest? . An operator that is very close to combine latest and that we also used and I think it is very important to know is the reef latest from operator and I believe I also have a diagram for the with latest one. Get the chest quickly jump to another. presentation Good. So this is a talk that I gave that ancient India every single operator which diagrams and explain it a little bit and I guess there is the roof latest from at the very bottom. combine all
Singapore exhaust switch Altima second murder or weave latest from amazing take a look at the roof latest from ITunes Denver for inputstream and then we have to read latest from operator and I want to have the latest value of I2. Bypass iPod to this operator and then start this emissions. I am it's the first day you and nothing happens because there is no latest value of I2 Then I told him it's but as you can see here, this is great. So there will be no admission. I told him it's a second
time and again, it is grayed out. There is no emission only if our input stream the green one if it's a value. No, we have a latest will you be combined or green in recent with the latest value of RI to that yellow stream Nation operators It's always important to think about who is triggering the next mission in the previous case the latest to values of post stream 3:16 mission in this case my input string trick us the emission. Very important to know I received the latest value and even if my inner stream it's nothing happens only
if the green one admits. It triggers the next Amusement then I can't get the latest value of my internal stream. Catch meif latest from can we have three minutes left and I guess I covered at least for me the most important operators from this presentation from this Workshop. Are there any wishes for for operators that you want to see if I guess pretty much every single operator or submerge skin or some really crazy operators. Are there any in interest from your sight just shut it off merch map School
Okay, let's talk to some Rick Smith and to explain Richmond. I lose if I lose my Ig private approach. What is algebra? 3 Julian of broken parts broken pots reunions or XY we talkin about Let Me Explain. I broke every single operator into the tiniest Parts. I could to map for switch exhaust merch Are there any parts and reunited them and if I look at the switch map to operator? I now know that it consists of the switch the map and the two and if I understand with met means for 2 minutes and switch means I I understand the whole meaning of the word operator in
this is the approach that try to apply to explain all the merge map baba, baba baba. Let's first start with map. And if you take a look at our hair or the operator chart receded map is included in a lot of different operators, if you understand you understand physically 50% of all of those operators Whitaker What is mep mep takes an input stream runs a function and transforms into an output stream transformation bringing something from A to B transportation breaks temperature change the form the shape of the venue
Envy X to everybody knows this. What is the difference to skin does not have an internal State like there is no accumulator. I cannot catch the latest belly. When's Dusk to something and I like tea packet into the next corn. But what's interesting about me, please? I cannot only method to another number. I could basically make it to anything right? I could take this number in my pit to another Observer. Michigan and its value This is how we how we can use map. Let's talk about merch map.
and to understand merch map....... It's almost in Richmond. We have to talk about merch. And then we know what to expect. Right to what is murch doing. Rich basically takes two different streams and Merchants values together into one single stream. No matter what the time difference is. I guess it's not that hard to understand. So whenever I click a button or a push, whatever did we get to meet it and it will get Directions to Osborne sing output and now we understand what measurement does it takes is singing value Maps it to an observable which
emits values and Toes in the hope. So the Brits are merged together into one single output. This is what merch map. 0 seconds to minutes. Basically, if you have more questions, I'm here don't hesitate to ask me anything and I hope you had a lot of fun and you learn something with my example sentence diagrams. Thanks for your time.
Buy this talk
Access to all the recordings of the event
Buy this video
With ConferenceCast.tv, you get access to our library of the world's best conference talks.