當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Swift Optional task(priority:_:)用法及代碼示例

實例方法

task(priority:_:)

在此視圖出現之前添加要執行的異步任務。

聲明

func task(
    priority: TaskPriority = .userInitiated,
    _ action: @escaping () async -> Void
) -> some View

返回值

在視圖出現之前異步運行指定操作的視圖。

參數

priority

創建異步任務時使用的任務優先級。默認優先級為 userInitiated

action

SwiftUI 在視圖出現之前作為異步任務調用的閉包。 SwiftUI 將在視圖消失後的某個時間點自動取消任務,然後操作完成。

詳述

使用此修飾符來執行一個生命周期與修改後的視圖相匹配的異步任務。如果任務在SwiftUI 刪除視圖或視圖更改身份之前未完成,SwiftUI 將取消任務。

在任務中使用await 關鍵字等待異步調用完成,或等待 AsyncSequence 實例的值。例如,您可以修改 Text 視圖以啟動從遠程資源加載內容的任務:


let url = URL(string: "https://example.com")!
@State private var message = "Loading..."


var body: some View {
    Text(message)
        .task {
            do {
                var receivedLines = [String]()
                for try await line in url.lines {
                    receivedLines.append(line)
                    message = "Received \(receivedLines.count) lines"
                }
            } catch {
                message = "Failed to load"
            }
        }
}

此示例使用 lines 方法將存儲在指定 URL 的內容作為異步字符串序列獲取。當每個新行到達時,for - await - in 循環的主體將行存儲在字符串數組中,並更新文本視圖的內容以報告最新的行數。

可用版本

iOS 15.0+, iPadOS 15.0+, macOS 12.0+, Mac Catalyst 15.0+, tvOS 15.0+, watchOS 8.0+

相關用法


注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 Optional task(priority:_:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。