我尝试连续运行 3 个函数,让每个函数在下一个函数开始之前完成。下面的代码运行正常,但我收到三条警告try await [one, two, three]
:
try
表达式中没有调用抛出函数- 表达式
async
中没有发生任何运算await
- 类型表达式
[()]
未使用。
关于如何正确编码且不出现这些警告,有什么建议吗?
Task {
let one: () = await func1()
let two: () = await func2()
let three: () = await func3()
try await [one, two, three]
}
func func1() async { ... }
func func2() async { ... }
func func3() async { ... }
这些函数本质上是从单独的外部源解码 JSON 数据,然后对结果进行计算,因此每次解码在下一次解码开始之前进行非常重要。
它很简单:
这将连续运行它们。但要小心在这些函数中引入额外的非结构化并发(
Task {…}
)。逐一解决警告,这非常简单:
说要删除
try
。说要删除
await
。表示函数的返回值在执行后不会被使用或存储。实际上,在你的例子中没有返回值。可能在你的实际函数中会有返回值,你可能想用它做一些事情,比如
let result = [one, two, three]
所有 3 个警告实际上并不严重,编译器只是想通过指出代码中的某些内容不完整来帮助您。
因此,在您按照编译器的建议操作后,您会注意到警告现在出现在函数上。它们不是
throwing
,因此不需要标记为try
。工作代码可能看起来像这样,没有返回值。您将看到函数按所需的顺序运行,我添加了一些示例
sleep
代码: