[英]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.