0

我正在桥接 Swift 中的同步/异步世界,并逐步采用异步/等待。我正在尝试调用从非异步函数返回值的异步函数。我知道显式使用 ofTask是这样做的方式,如描述的,例如,here

该示例并不真正适合,因为该任务不返回值。

经过大量搜索,我无法找到任何关于我认为很常见的问题的描述:异步任务的同步调用(是的,我知道这会冻结主线程)。

我理论上想在我的同步函数中写的是:

let x = Task {
  return await someAsyncFunction()
}.result

但是,当我尝试这样做时,由于尝试访问而出现此编译器错误result

'async' property access in a function that does not support concurrency

我发现的另一种选择是:

Task.init {
  self.myResult = await someAsyncFunction()
}

wheremyResult必须归属为@State成员变量。

但是,这并不像我想要的那样工作,因为无法保证在Task.init()完成并进入下一个语句之前完成该任务。那么我怎样才能同步等待该任务完成呢?

4

0 回答 0