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...

Комментарии • 48

  • @KimbrellBrad
    @KimbrellBrad 2 года назад +11

    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!

  • @markaurelius61
    @markaurelius61 2 года назад +5

    That cleared up a lot of my confusion about async await. Thanks for the extra level of detail by showing the current thread numbers.

  • @AntonR8
    @AntonR8 2 месяца назад +5

    Class property 'current' is unavailable from asynchronous contexts; Thread.current cannot be used from async contexts.; this is an error in Swift 6

  • @kdtechniquesofficial6153
    @kdtechniquesofficial6153 Год назад

    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.

  • @jonothen2212
    @jonothen2212 Год назад +1

    thanks bro, this is great
    helped me got rid of that purple warning

  • @Manish_Sahu
    @Manish_Sahu 5 месяцев назад +1

    super easily explained the topic

  • @АлексейШестаков-ь8н

    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?

    • @gibber1sh-c6w
      @gibber1sh-c6w Год назад +1

      Me too. author1() always runs on the Main thread. Not sure why.

    • @lolrie
      @lolrie 9 месяцев назад

      Same - seems like addAuthor1() runs on background thread by default

  • @penguinwolf0125
    @penguinwolf0125 Год назад +1

    Simply fantastic simulation, awesome.

  • @suryakantsharma6761
    @suryakantsharma6761 Год назад

    Great work!! Mind-blowing. Keep it up

  • @tutecodes3631
    @tutecodes3631 Год назад +2

    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

  • @emdutt4012
    @emdutt4012 Год назад +1

    brother Nick, I am using Xcode 14 every time it goes background thread. for example, author1 or something 2 is in the background thread .

  • @harshyadav9220
    @harshyadav9220 2 года назад

    Mybe Simplest Video but also quite Important one.

  • @kdtechniquesofficial6153
    @kdtechniquesofficial6153 Год назад +1

    "If it doesn't work, I probably need a new job, but It did work" LOL... 😂😂😂😂😒😒😒

  • @bruhmoment3731
    @bruhmoment3731 2 года назад +1

    Very well explained!

  • @vidorahi
    @vidorahi 21 день назад

    If it possible you can update this for swift 6 and Observation Framework

  • @mrtayyabmughal7209
    @mrtayyabmughal7209 2 года назад +2

    Awesome Async!

  • @BABEENGINEER
    @BABEENGINEER Год назад

    Love this explanation! More videos like this!

  • @GilbertLei-ih5lc
    @GilbertLei-ih5lc 4 месяца назад

    well explained. thank you!

  • @911gogogo
    @911gogogo Год назад +1

    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?

    • @emdutt4012
      @emdutt4012 Год назад +3

      use only Thread() instead of Thread. current.

    • @911gogogo
      @911gogogo Год назад

      @@emdutt4012 Thanks bro

  • @vladislavwhatislove7156
    @vladislavwhatislove7156 2 года назад

    the best explanation! Thank you =)

  • @alexbui0609
    @alexbui0609 Год назад

    Great explanation!

  • @eamdude
    @eamdude Год назад

    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.

  • @3ilz
    @3ilz 2 года назад

    Sorry still confused as to why author2 and something2 are in the background threads even though they are being ran in a MainActor?

  • @paulancajima
    @paulancajima 2 года назад +1

    Is there a chance await hangs forever? Is there a timeout config?

  • @Nick-gj9gz
    @Nick-gj9gz 2 года назад

    Best one I've seen

  • @GloverCom
    @GloverCom Год назад

    Brilliant. Huge Help!

  • @kr1s0404
    @kr1s0404 2 года назад

    at 3:26, I laughed so hard on this hahahahaha ... great work Nick!

  • @andresraigoza2082
    @andresraigoza2082 2 года назад

    Awesome!!! Thank you so much.

  • @lizakryshkovskaya7412
    @lizakryshkovskaya7412 Год назад

    Great job! 🙏

  • @hashcat5721
    @hashcat5721 2 года назад +1

    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)
    })

  • @valentine1925
    @valentine1925 Год назад

    good quality tutorials!

  • @josemanuelortizsanchez4983
    @josemanuelortizsanchez4983 Год назад

    Thanks!

  • @woozoobro
    @woozoobro Год назад

    Your Joke is always funny lol

  • @1slyboy
    @1slyboy 10 месяцев назад

    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

  • @mamazur
    @mamazur Год назад

    .onAppear{ Task{ await viewModel.addAuthor1 No 'async' operations occur within 'await' expression What is going on? Please help

  • @guillaumeramey
    @guillaumeramey 2 года назад +1

    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 ?

    • @SwiftfulThinking
      @SwiftfulThinking  2 года назад +4

      Yea it is good practice, but depending on the situation. I have a whole video on GlobalActors and the @MainActor later in this series!

  • @wjcnwjcn
    @wjcnwjcn 5 месяцев назад

    Task.sleep(for:tolerance:clock:) in iOS 16 is nicer than Task.sleep(nanoseconds:) in iOS 13.