這篇將會寫一些應用會遇到的問提與原因.
import Foundation
import _Concurrency
// 模擬耗時的非同步任務
func fakeTask(_ id: Int, seconds: UInt64) async -> String {
    try? await Task.sleep(nanoseconds: seconds * 1_000_000_000)
    return "任務 \(id) 完成,用時 \(seconds) 秒"
}
    let start = Date()   // 紀錄開始時間
    
    // 建立多個 async let 任務
    async let t1 = fakeTask(1, seconds: 2)
    async let t2 = fakeTask(2, seconds: 3)
    async let t3 = fakeTask(3, seconds: 1)
    async let t4 = fakeTask(4, seconds: 5)
    async let t5 = fakeTask(5, seconds: 4)
    // 等待所有結果
    let results = await [t1, t2, t3, t4, t5]
    for r in results {
        print(r)
    }
    
    let end = Date()
    let total = end.timeIntervalSince(start)
    print("總耗時:\(String(format: "%.2f", total)) 秒")

核心觀念:
async let 宣告後,任務會馬上開始執行,但不會立即等待。
await [t1, t2, t3, t4, t5] 時,才會等待所有任務完成。
執行時間:
雖然每個任務都有不同耗時 (1~5 秒),但它們是同時開始的。
總耗時 ≈ 最長的任務時間 (5 秒)。
如果用 await fakeTask(...) 依序執行,總耗時會是 全部加總 15 秒。
輸出順序:
任務完成的順序由實際執行時間決定,不一定照 t1~t5 宣告順序。
但因為 await [t1, t2, t3, t4, t5] 會把結果依照宣告順序包裝回陣列,輸出還是 t1 → t5。
開始 → 同時啟動 t1~t5 → 
最短的 t3 完成(1s) → t1(2s) → t2(3s) → t5(4s) → t4(5s) → 
全部完成後收集結果 → 計算總耗時