How to use async / await keywords in Swift | Swift Concurrency #3
HTML-код
- Опубликовано: 15 сен 2024
- Async and Await are the two most common keywords used in Swift Concurrency. We will use them in every video going forward - and likely multiple times per video! In this video, we will take an in-depth look into what these keywords are really doing behind the scenes. Understanding this will save you hours of debugging!
Next video: • How to use Task and .t...
Previous video: • Download images with A...
🤙 WELCOME BACK 🤙
WEBSITE: www.swiftful-t...
DISCORD: / discord
GITHUB: github.com/Swi...
SAY THANKS: www.buymeacoff...
I have looked at Async quite a bit from many different sources. This explanation "hit me in the head" or was perfect for my understanding. Thanks for this new series - it is very timely for most of us!
That cleared up a lot of my confusion about async await. Thanks for the extra level of detail by showing the current thread numbers.
Class property 'current' is unavailable from asynchronous contexts; Thread.current cannot be used from async contexts.; this is an error in Swift 6
Did @Escaping then Combine videos came. After several months Nick explains about Async & Await. And I'm like here we go again. hehe.. Awesome work as always Nick.
thanks bro, this is great
helped me got rid of that purple warning
super easily explained the topic
Hi, Thanks a lot for your work! I have a question here. I called function addAuthor1() several times and I never get main thread as you have. What can be the problem here? Or is it some changes in swift concurrency?
Me too. author1() always runs on the Main thread. Not sure why.
Same - seems like addAuthor1() runs on background thread by default
Simply fantastic simulation, awesome.
Great work!! Mind-blowing. Keep it up
In my case when i call addAuther1() from onAppear it shows null in thread name following warning receives
Class property 'current' is unavailable from asynchronous contexts; Thread.current cannot be used from async contexts.; this is an error in Swift 6
same. Thread.current not available in async appaz
brother Nick, I am using Xcode 14 every time it goes background thread. for example, author1 or something 2 is in the background thread .
Mybe Simplest Video but also quite Important one.
"If it doesn't work, I probably need a new job, but It did work" LOL... 😂😂😂😂😒😒😒
Very well explained!
If it possible you can update this for swift 6 and Observation Framework
Awesome Async!
Love this explanation! More videos like this!
Thanks!
well explained. thank you!
I have an error in 08:09, and it is called "Class property 'current' is unavailable from asynchronous contexts; Thread.current cannot be used from async contexts.; this is an error in Swift 6"
What is it means?
use only Thread() instead of Thread. current.
@@emdutt4012 Thanks bro
the best explanation! Thank you =)
Great explanation!
Why will it not work on macOS? Even running on Catalyst does not show any images, it seems like the URLSession calls doesn't work. If I compile for iPad it is o.k. all three different ways.
Sorry still confused as to why author2 and something2 are in the background threads even though they are being ran in a MainActor?
Is there a chance await hangs forever? Is there a timeout config?
Best one I've seen
Brilliant. Huge Help!
at 3:26, I laughed so hard on this hahahahaha ... great work Nick!
Awesome!!! Thank you so much.
Great job! 🙏
The author has an error, we do not get into the main stream.
line 37 - to be moved to await MainActor.body { }
await MainActor.run(body: {
let author2 = "Author2 : \(Thread.current)"
self.dataArrat.append(author2)
let author3 = "Author3 : \(Thread.current)"
self.dataArrat.append(author3)
})
good quality tutorials!
Glad you like them!
Thanks!
Your Joke is always funny lol
NOTE: Class property 'current' is unavailable from asynchronous contexts; Thread.current cannot be used from async contexts.; this is an error in Swift 6
For the purpose of this tutorial the warning can be ignore, but you should avoid trying to get access to Thread.current in production. You can however still use thread.isMainThread
.onAppear{ Task{ await viewModel.addAuthor1 No 'async' operations occur within 'await' expression What is going on? Please help
Hi Nick, thank you for another great video ! I saw that you can add @MainActor to your class so you don't need to specify it inside the functions, is it a good practice or not ?
Yea it is good practice, but depending on the situation. I have a whole video on GlobalActors and the @MainActor later in this series!
Task.sleep(for:tolerance:clock:) in iOS 16 is nicer than Task.sleep(nanoseconds:) in iOS 13.