Swift Academy · Pelajaran

Konkurensi terstruktur, fungsi asinkron

Definisikan fungsi async , panggil dengan await , dan pahami konkurensi terstruktur : tugas anak selesai sebelum cakupan induk keluar.

Pelajaran 1 dari 38 langkah

Konkurensi terstruktur, fungsi asinkron adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 3 pelajaran total.

Mengapa async/await?

async/await memungkinkan Anda menulis kode asinkron yang terbaca seperti kode sinkron. Dengan konkurensi terstruktur, tugas anak terikat pada masa hidup lingkup—tanpa kebocoran.

Fungsi asinkron pertama Anda

Fungsi async dapat await pekerjaan asinkron lainnya. Buat Task dalam skrip atau playground untuk memanggilnya.

// Simulate a short async delay, then return a value
func fetchNumber() async -> Int {
    try? await Task.sleep(nanoseconds: 200_000_000) // ~200ms
    return 42
}

// Call sites must use "await" from an async context or a Task
Task {
    let n = await fetchNumber()
    print("Fetched:", n)  // 42
}

Penangguhan, lalu dilanjutkan

await menangguhkan tugas sampai hasilnya siap, lalu eksekusi dilanjutkan dengan rapi pada baris berikutnya.

func greet(after seconds: Double) async -> String {
    let ns = UInt64(seconds * 1_000_000_000)
    try? await Task.sleep(nanoseconds: ns)
    return "Hello after \(Int(seconds))s"
}

Task {
    print(await greet(after: 1.0))
    print("Back on the same task after await.")
}

Dasar-dasar async let

Gunakan async let untuk memulai tugas anak. Tugas tersebut berada dalam lingkup saat ini dan harus di-await sebelum lingkup berakhir.

// Run child tasks concurrently within the same scope
func fetchUser() async -> String { "Ana" }
func fetchScore() async -> Int { 90 }

Task {
    async let name = fetchUser()
    async let score = fetchScore()
    // Both start immediately; await joins them before use
    let summary = await "\(name): \(score)"
    print(summary) // "Ana: 90"
    // Scope ends -> child tasks are awaited automatically (structured)
}

Induk menunggu anak

Terstruktur berarti tugas induk tidak dapat selesai sebelum tugas anak selesai. Hal ini mencegah pekerjaan terlantar dan membuat masa hidup dapat diprediksi.

// Parent Task encapsulates children lifetimes
func loadProfile() async -> String {
    async let name = fetchUser()
    async let score = fetchScore()
    return await "\(name) (\(score))"
}

Task {
    let profile = await loadProfile()
    print(profile) // e.g., "Ana (90)"
    // loadProfile does not return until its children are done
}

Panduan

Tips:

  • Berpikirlah dalam bentuk tugas, bukan utas.
  • Gunakan async let untuk pekerjaan saudara; lakukan await sebelum lingkup berakhir.
  • Gunakan Task.sleep untuk demonstrasi; aplikasi nyata melakukan await pada I/O jaringan atau berkas.

Definisi await

Pemeriksaan singkat: Apa yang dilakukan await?

Ringkasan

Ringkasan: Tandai fungsi dengan async, lalu panggil menggunakan await. Gunakan async let untuk memulai tugas-tugas saudara dan andalkan konkurensi terstruktur agar tugas anak selesai sebelum tugas induk.

Gratis untuk memulai

Belajar Swift dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
122
Pelajaran
409

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Konkurensi terstruktur, fungsi asinkron” gratis?

Ya — teks lengkap “Konkurensi terstruktur, fungsi asinkron” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 3 pelajaran total.

Apa yang akan aku pelajari di “Konkurensi terstruktur, fungsi asinkron”?

Definisikan fungsi async , panggil dengan await , dan pahami konkurensi terstruktur : tugas anak selesai sebelum cakupan induk keluar. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Swift Academy?

Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 3.

Berapa lama pelajaran “Konkurensi terstruktur, fungsi asinkron” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?

Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Konkurensi terstruktur, fungsi asinkron
  2. async let, Task, pembatalan
  3. try await dan propagasi galat
← Kembali ke Swift Academy