IAsyncEnumerable, My Favorite C# 8 Feature That No One Is Using
HTML-код
- Опубликовано: 2 окт 2024
- Today we'll take a look at IAsyncEnumerable, one of my favorites we got in C# 8!
Make my day on Patreon & get the source code: / amantinband
Connect with me on 'em socials:
Twitter: / amantinband
LinkedIn: / amantinband
GitHub: github.com/ama...
#dotnet #csharp #amantinband
Hope you enjoyed the video! Small correction (9:18), ForEachAsync doesn't "materialize" the IAsyncEnumerable. It iterates over it, similar to the await foreach we wrote earlier. Here is the underlying source code: github.com/dotnet/reactive/blob/85f1eb7c53e27cccdbeee3e0b044916168843fcc/Ix.NET/Source/System.Linq.Async/System/Linq/Operators/ForEach.cs#L30
System.Linq.Async? I learned something new 😁
Yeah it’s pretty sweet 😎
Are the 2 best channels on RUclips, I learned so much with both. Goats
Im lucky enough to use it on a daily basis. Extremely useful when working with sensors, networking, or any kind of real time streaming where the data being returned can potentially be infinite. Great video 👍 keep it up!
Sounds interesting 👀
Hey, first time viewer of the channel. Thumbs up for the short & informative video, liked it very much. Could you please share what kind of skin are you using for your terminal? It seems very useful.
Thanks! You can follow this step by step: www.hanselman.com/blog/my-ultimate-powershell-prompt-with-oh-my-posh-and-the-windows-terminal
The biggest surprise to me is how easy it is to implement lazy code using yields eveywhere!
Very bad example to show the benefits of IAsyncEnumerable
Thank u for the video. I want to suggest another topic related to DDD/Design/Architecture. Could u post a video about anemic code/design? Cons and pros. Thank u.
That's a great topic. I'll see if I can create a compelling video. Are you following @codeopinion? He covers this topic in a few different videos, I think
lol by the 3min mark I already tuned out. KISS
How do you get IAsyncEnumerable to work in an api contoller or minimal api? No matter what I try it still buffers the responses and sends them all at one time. Thanks
Correct. Even in the XStreamingElement you cannot use this…😢
Thanks ! great video , but the sound quality is not great.
I'm struggling to get good sound with the Blue Yeti. I hope the video coming out today has better sound quality. Please let me know if it's still not great! Otherwise, I think it's time to get a better mic 🙂
Great tutorial !
Great explanation. For F# programmers, consider using the 'TaskSeq' Nuget Lib, which brings 'await foreach' to F# using Computation Expressions like 'task {...}' and 'seq{...}'.
What about EF Core though? How will it interact with it? One SQL request per element of the collection? Or will it fetch all the collection like with a standard List?
Random question, but what do you use to draw the boxes and arrows on your screen ? In today’s remote working environment I’m really looking for something this
ZoomIt. Check out aka.ms/ZoomIt
System.Linq.Async??
I wonder how long that has been functional 😊
Amichai, I'm so glad I found your channel. You're the GOAT
I agree with your opinion on why it wasn't more widely accepted. I used it quite a bit on a project and we ended up needing to write helper methods just to work with them when those helpers could have just been built in. I am hoping someday Microsoft gives it another pass to consolidate it. It is very nice when calling paged APIs though.
Would you use it as a return type in web api controllers?
is it possible to get the source code for this please?
all clean architecture implementations I have seen in my 15+ years experience and DDD across several organizations (multi billion dollars)were mostly terrible.
I have come across a project two years ago that was .net core 3.1 vertical slice cqrs and mediator, fluent result, and angular as frontend.
It was a beautiful project to work with.
Clean architecture on the other hand, i am done with it
I've worked on and researched many projects within Microsoft and public open-source projects, and I tend to agree.
Working in a small aligned team (1-5 devs) is a whole different story than bigger, unaligned teams.
So, what architecture to use? where can we find some documentation?
Nicely done! I love the way you explain things. You're a natural teacher!
Is it not too much advertisement in a 10 minutes video you have 4-5 ads in between and in the beginning 2?
Yikes.. RUclips controls all my ad placements before and during the video
I just used it today and was wondering about cancellationtoken usage. And just saw your video!Great timing! 🙂
I see you have used break keyword without cancellation token. I couldn't find such concise explanation anywhere. Thank you!
But can you explain use of cancellation token with iasyncenumerable?
I might do a follow up video on this. Thanks, Nayan!
this is friggin gamechanger!!! How do I not know about it?? Whares tha catch?? Can you turn it into IObservable??
can you turn IObservable into IAsyncEnumerable? What the hell? I want to know more!!!
being able to turn this into IObservable would make some stuff sooooo easy!!
Do you plan to get back to the DDD / Clean Arch series? :)
Of course, there are still many great topics to cover 👀
Why was it named IAsyncEnumerable instead of IEnumerableAsync?
Cuz it isn't a method
Thank you!
This is awesome and I think will solve a pretty nasty bit of code I haven't been able to simplify. One question: Isn't printing the statement "Received 10 numbers" a bit misleading? The Console.WriteLine() only gets called once, but if the NumbersClient only returns a page of 10 (with the range of 0-9), then 11 would only be in our final results if the NumbersClient returned a second page (so actually 20 numbers). I'm not too familiar with the yield keyword, so that part kind of confused me.
Yes, it isn't very clear. It would have been clearer to put it right under the call to the client. Sorry about that 🙂
Are you using Vim for your keybinds?
Yup 👍
Great content. Highly appreciated 👍
Please update VS Code, that notification is taking my attention to often 😁
Hahah it's already updated in the video coming out today 😉