背景
CLIアプリでasync functionをデバッグしたい時
Task.init
ではクロージャーの終了を待たないので結果が不安定になったり、そもそも結果が出なかったりします。
func doSomething() async {
...
print("end")
}
Task {
await doSomething()
}
解決策
Swift 5.7以降
top-level awaitが使えます。
func doSomething() async {
...
print("end")
}
await doSomething()
Swift 5.5.2〜
func doSomething() async {
...
print("end")
}
@main struct Main {
static func main() async {
await doSomething()
}
}