簡體   English   中英

調用函數結束后異步調用結束

[英]Asynchronous call ends after calling function ends

我有以下方法,我需要在其中調用的異步任務在方法之前完成:

  func checkForLoggedInUser() {
    self.isAuthenticating = true
    Task {
      if await dataManager.isUserLogged() {
        do {
          self.loggedInUser = try await dataManager.fetchMe()
        } catch {
          self.error = error
        }
      }
      self.isAuthenticating = false
    }
  }

這不會發生。 添加一些控制台打印結果如下:

  func checkForLoggedInUser() {
    self.isAuthenticating = true
    print("1")
    Task {
      print("2")
      if await dataManager.isUserLogged() {
        print("3")
        do {
          print("4")
          self.loggedInUser = try await dataManager.fetchMe()
        } catch {
          print("5")
          self.error = error
        }
        print("6")
      }
      print("7")
      self.isAuthenticating = false
    }
    print("8")
  }

結果: 1,8,2,3,4,6,7

當您使用Task時,您實際上是在告訴它在您的代碼繼續運行時停止並執行其他操作。

您應該使您的函數本身async ,然后您不需要它運行並執行單獨的Task

func checkForLoggedInUser() async {
self.isAuthenticating = true
  if await dataManager.isUserLogged() {
    do {

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM