SwiftUI WWDC21 新特性之 MainActor 取代 DispatchQueue.main.async
async 特性 SwiftUI main 取代 WWDC21
2023-09-11 14:18:30 时间
SwiftUI WWDC21 新特性之 MainActor 取代 DispatchQueue.main.async
MainActor 是什么
一个单例actor,其执行者相当于主调度队列。
宣言
@globalActor actor MainActor
官方代码
@MainActor
class Photos: ObservableObject {
@Published private(set) var items: [SpacePhoto] = []
// Updates `items` to a new, random list of photos.
func updateItems() async {
let fetched = await fetchPhotos()
items = fetched
}
// Fetches a new, random list of photos.
func fetchPhotos() async -> [SpacePhoto] {
var downloaded: [SpacePhoto] = []
for query in Photos.keys {
let url = SpacePhoto.request(key: query)
if let photo = await fetchPhoto(from: url) {
downloaded.append(photo)
}
}
return downloaded
}
func fetchPhoto(from url: URL)
相关文章
- 此上下文中不允许异步操作。启动异步操作的页必须将 Async 特性设置为 true,并且异步操作只能在 PreRenderComplete 事件之前的页上启动。
- C# 5.0 Async Tips and Tricks, Part 1
- 第二十三节: EF性能篇(三)之基于开源组件 Z.EntityFrameWork.Plus.EF6解决EF性能问题 第四节:一些指令总结 定时调度系列之Quartz.Net详解 第十七节:易混淆的概念(静态和非静态、拆箱和装箱) 那些年我们一起追逐的多线程(Thread、ThreadPool、委托异步调用、Task/TaskFactory、Parallerl、async和await)
- android开发步步为营之67:使用android开源项目android-async-http异步下载文件
- Spring Boot系列二 Spring @Async异步线程池用法总结
- es6 async与await实战
- 【JS】defer / async
- SwiftUI3 iOS15 完整项目之 新闻类项目支持Feed流网络请求与展示 Async Await, CoreData and MVVM
- JS异步编程 (2) - Promise、Generator、async/await
- Swift 并行编程现状和展望 - async/await 和参与者模式
- c++ 如何获取多线程的返回值?(std::thread ,std::async)
- ES9的新特性:异步遍历Async iteration
- 异步任务spring @Async注解源码解析
- Async/Await替代Promise的6个理由
- c# 异步编程demo (async await)
- async与await是什么?async和await基本用法
- C# await async Task