Listings Sillmann/Tutorial Swift, Teil 1

Listing 1: Funktion mit async deklarieren
func loadPhoto(_ name: String) async -> Data {
    let photoURL = URL(string: "https://photoURL/\(name).png")
    // Load photo from network ...
    let imageData = // Store loaded image data
    return imageData
}

---

Listing 2: Bild laden und speichern (Simulation)
func saveFavoritePhoto() async {
    let favoritePhoto = getFavoritePhotoName()
    print("Start loading favorite photo ...")
    let favoritePhotoData = await loadPhoto(favoritePhoto)
    print("Loaded favorite photo!")
    save(favoritePhotoData)
}

---

Listing 3: Die Funktion lädt die drei Bilder nach und nach herunter
func loadPhotos() async -> [Photo] {
    let firstPhoto = await loadPhoto("FirstPhoto")
    let secondPhoto = await loadPhoto("SecondPhoto")
    let thirdPhoto = await = loadPhoto("ThirdPhoto")

    let photos = [firstPhoto, secondPhoto, thirdPhoto]
    return photos
}

---

Listing 4: async let lädt die Bilder parallel herunter
func loadPhotos() async -> [Photo] {
    async let firstPhoto = loadPhoto("FirstPhoto")
    async let secondPhoto = loadPhoto("SecondPhoto")
    async let thirdPhoto = loadPhoto("ThirdPhoto")

    let photos = await [firstPhoto, secondPhoto, thirdPhoto]
    return photos
}

---

Listing 5: Eine Task Group erstellen
func loadPhotos() async {
    await withTaskGroup(of: Void.self, body: { taskGroup in
        let photoNames = await availablePhotoNames()
        for name in photoNames {
            taskGroup.addTask {
                await loadPhoto(name)
            }
        }
    })
    print("Finished photo loading")
}

---


