所以我看到过这样的代码:
func doSomething() {
async {
let foo = await something()
}
}
Run Code Online (Sandbox Code Playgroud)
与
func doSomething() {
Task {
await doSomething()
}
}
Run Code Online (Sandbox Code Playgroud)
该任务还有一个修改版本:
TextView(...)
.task {
let foo = await something()
}
Run Code Online (Sandbox Code Playgroud)
我想知道它们之间有什么区别,我应该使用哪一个?
Swe*_*per 15
async { ... }已弃用。它已被 取代Task { ... },它使用 的初始化程序Task。
Task { ... }将异步操作作为顶级任务运行。
另一方面,视图修饰符是一个视图修饰符,它在视图出现时运行异步操作。重要的是,该任务与视图具有相同的生命周期。如果视图被删除,任务也会被取消。.task
比较:
func foo() {
Task {
await doWork() // gets started when foo is called
}
}
Run Code Online (Sandbox Code Playgroud)
和
Text("Hello")
.task {
// gets started when "Hello" appears,
// *not* when .task is called
await doWork()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4665 次 |
| 最近记录: |