Konkurensi terstruktur, fungsi asinkron
Definisikan fungsi async , panggil dengan await , dan pahami konkurensi terstruktur : tugas anak selesai sebelum cakupan induk keluar.
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
awaitsebelum lingkup berakhir. - Gunakan
Task.sleepuntuk 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.
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
- Konkurensi terstruktur, fungsi asinkron
- async let, Task, pembatalan
- try await dan propagasi galat