yam*_*mbo 5 asynchronous task async-await swift swiftui
我有一个标记为 的函数@MainActor
,它进行异步调用,然后更新一个@Published
var,该 var 随后将更新 UI。异步调用是否会在主线程上阻塞,或者发布的变量的更新是否是主线程上唯一要做的事情?
@Published var users: [User] = []
@MainActor
func getUsers() {
Task {
// Is the async call blocking on the main thread here?
users = await userRepository.getUsers()
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,是否users
在主线程上更新,而异步调用发生UserRepository
在后台完成?或者,该异步调用是否也在主线程上运行并阻塞?
初始化Task
器
Task(priority:operation:)
Run Code Online (Sandbox Code Playgroud)
继承调用者的优先级和参与者上下文,因此在您的情况下,当 func 被标记时@MainActor
,它将在主队列上运行。
userRepository.getUsers()
在另一个队列上运行,然后当它返回时,您func
将继续返回主队列。
当它运行时,主队列不会被阻塞,但 func 本身会被挂起。
归档时间: |
|
查看次数: |
920 次 |
最近记录: |