Swift 5.5 async let - 错误:表达式为“async”但未标记为“await”

2024-01-29

WWDC21介绍雨燕5.5, with 异步/等待。继探索 Swift 中的结构化并发 https://developer.apple.com/wwdc21/10134 and 在 Swift 中认识 async/await https://developer.apple.com/wwdc21/10132WWDC21 会议,我正在尝试使用异步让功能。

这是我的游乐场代码:

func doIt() async -> String {
    let t = TimeInterval.random(in: 0.25 ... 2.0)
    Thread.sleep(forTimeInterval: t)
    return String("\(Double.random(in: 0...1000))")
}

async {
    async let a = doIt()
    async let b = doIt()
    async let c = doIt()
    async let d = doIt()
    
    let results = await [a, b, c, d]
    for result in results {
        print("  \(result)")
    }
}

但是,对于每个“async let”行,我收到此错误:

error: AsyncLetSwift55WWDC21.playground:12:15: error: expression is 'async' but is not marked with 'await'
    async let a = doIt()
              ^
              await 

Paul Hudson's blog showed this example: Hacking With Swift async let example

The Exploring structured currency video has this example at about the 8:10 mark: enter image description here

编辑:这似乎确实是游乐场特定的问题。根据关于同一问题的建议苹果开发者论坛 https://developer.apple.com/forums/thread/682344,运行相同的代码(好的,我添加了sleep(10)对于 macOS,在异步块之后到源文件的末尾,因此应用程序不会在异步调用完成之前终止)作为 macOS 命令行项目不会给出任何错误并产生正确的输出。

这是一个错误,还是我只是不理解某些事情?


我的建议是:不要在操场上尝试这个。游乐场还没有为这些东西做好准备。您的代码可以在实际项目中编译并运行良好。这是一个例子:

class ViewController: UIViewController {
    
    func doIt() async -> String {
        let t = TimeInterval.random(in: 0.25 ... 2.0)
        Thread.sleep(forTimeInterval: t)
        return String("\(Double.random(in: 0...1000))")
    }
    func test() {
        async {
            async let a = doIt()
            async let b = doIt()
            async let c = doIt()
            async let d = doIt()
            
            let results = await [a, b, c, d]
            for result in results {
                print("  \(result)")
            }
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        test()
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift 5.5 async let - 错误:表达式为“async”但未标记为“await” 的相关文章

  • 使用 JSON 将 iTunes 中的图像解析为 tableviewcontroller

    我正在尝试从中解析数据数据源 http ax itunes apple com WebObjects MZStoreServices woa ws RSS topsongs limit 30 json 标题已正确解析并显示 但解析图像时出现
  • 下标的使用不明确

    该代码块以前可以工作 但现在不行了 我在纬度和经度变量上收到错误 下标 的使用不明确 这是怎么回事 这是因为 Swift 更新吗 func showPrecincts var urlBoundaries http www oklahomad
  • 使用 PHP / Javascript 检测应用内浏览器 (WebView)

    我开发了一个适用于 iOS 和 Android 的应用程序 它使用应用程序内浏览器 Webview 从我的网络服务器访问 HTML 文件 我不希望用户可以在不使用该应用程序的情况下访问此文件 是否有可能检测用户是否使用应用程序或直接通过此智
  • 自定义 UITableViewRowAnimation 或持续时间

    我有一个用户可以拖动的应用程序UITableViewCells从一TableView到另一个 我通过在用户触摸的 UITableViewCell 顶部渲染一个 虚拟 单元格来实现此目的 并禁用 真实 单元格 然后我在目标中插入一个新行UIT
  • 当我的 iPAD 上安装了应用程序的“.ipa”文件时,如何获取 IOS 应用程序的捆绑包 ID

    我正在尝试在安装了我的应用程序的 iPad 上进行自动化测试 我正在使用 Appium 来自动化应用程序 它要求我输入需要测试的应用程序的捆绑 ID 有人可以帮我找到一种方法 从我的 IPAD 上安装的应用程序或从我的 iMAC 上下载的
  • Mapbox-iOS-SDK 6.3.0 Pod 安装错误 403 Forbidden

    下载Mapbox示例 运行pod install 报错 403 Forbidden 为什么 请帮忙 谢谢 pod Mapbox iOS SDK gt 6 3 0 ios sdk examples 298e050be7352eb28cee6f
  • iOS CorePlot如何安装

    我正在尝试在我的一个 iOS 项目中使用 CorePlot 但即使按照说明并在网上查找后 我仍无法正确安装该框架 我觉得文档没有发展 不再描述安装框架的正确方法 我跟着这些说明 https code google com p core pl
  • 从 CMSampleBuffer 播放音频

    我在 iOS 中为群组创建了一个视频聊天应用程序 我一直在寻找一些方法来分别控制不同参与者的音频音量 我找到了使用静音和取消静音的方法isPlaybackEnabled in RemoteAudioTrack 但不控制音量 我还想我们是否可
  • Dispatcher.BeginInvoke() 未异步运行

    这是我想做的事情的简化版本 onClick abutton a aNewMethod 将异步运行以保持 UI 响应 就是这样 我读过一些答案 这是我能想到的 private async void button Click object se
  • 如何简化 Swift Enum 自定义 init

    我创建了一个带有字符串类型的枚举 它有两个 init 方法 一种是使用 rawValue 的默认 init 方法 另一种是使用 intValue 的自定义 init 方法 我是这样写的 有没有什么简单的方法可以不使用两个开关盒 enum R
  • 如何使用 SqlDataReader 返回和使用 IAsyncEnumerable

    请看下面两种方法 第一个返回一个IAsyncEnumerable 第二个试图消耗它 using System Collections Generic using System Data using System Data SqlClient
  • 使用多个 DispatchQueue.main.async 查看冻结

    视图冻结而数据是获取并显示 以我的理解fetchBoard and initUserInfo 不要并行执行 因为视图仅在以下情况下加载fetchBoard 加载板 我担心如果使用DispatchQueue main async多次冻结视图
  • IOS:使用@property释放变量(非原子,保留)

    带有 property 非原子和保留的变量是否应该显式释放 interface MyScreenViewController UIViewController
  • UITableViewCell 中的自定义 VoiceOver 操作

    When a UITableView是可编辑的 其UITableViewCells允许用户在 VoiceOver 打开时执行自定义操作 当 VoiceOver 光标位于单元格上时 用户可以通过向上或向下滑动来听到可用的操作 然后通过双击屏幕
  • 如何在 Xcode 7 beta 4 中调用 SecItemCopyMatching?

    在使用 Swift 的 Xcode 6 和 7 的早期版本中 以下语法可以使用 var secureItemValue Unmanaged
  • SwiftUI:如何横向呈现全屏覆盖

    我正在制作一个应用程序 其中多个页面 视图嵌入到具有选项卡栏 菜单栏和标题的父视图中 如下所示 HeaderView MenuView TabView selection selected HomeView Page2View Page3V
  • UITableView更改标题标题颜色

    我正在设计 UITableView 的样式应用内设置工具包 http InAppSettingsKit并想要更改标题的颜色 标签Without title and Text Field应该是白色的 如何才能做到这一点 Thanks 这是一个
  • 在 WatchKit 和主机 App 中使用具有不同标志的同一文件

    我试图在我的 watchkit 扩展和主机应用程序中使用相同的代码 但在主机应用程序中使用一些附加代码 在 watchkit 扩展中使用一些附加代码 为此 我在各自的目标上添加了 WATCH 和 APP swift 标志 问题是 当我在选择
  • UIDocumentsInteractionController 显示 iBooks 但不打开它

    我的 UIDocumentsInteractionController 正在工作 提供一个带有 iBooks 按钮的操作表 但是当我单击该按钮时 它只是关闭并且不会将我带到 iBooks 这是我的代码 NSString filenamePa
  • 从 Web 服务器异步调用应用程序

    我有一个用 Spring 制作的 在 Tomcat 上运行的 Web 应用程序 在同一台机器上有一个普通的 Java 应用程序 我想通过从Web服务器调用Java应用程序来执行它 但我想让应用程序不会使用服务器的资源 它涉及分类器的训练 因

随机推荐