0Pricing
Swift Academy · Pelajaran

Menjembatani Result ke async/await

Mengubah API Result berbasis callback menjadi fungsi async yang dapat melempar error.

Menjembatani Result ke async/await adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. 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 4 pelajaran total.

Selamat Datang

API lama berbasis panggilan balik mengembalikan `Result`. Kode modern menggunakan async/await. Menjembatani keduanya adalah tugas umum — Swift memiliki pola yang rapi untuk kedua arah.

withCheckedThrowingContinuation

```swift func fetchAsync(url: URL) async throws -> Data { try await withCheckedThrowingContinuation { cont in fetchCallback(url) { result in cont.resume(with: result) } } } ``` `cont.resume(with: result)` menerima `Result` secara langsung.

withCheckedContinuation (Tanpa Pelemparan Kesalahan)

```swift func fetchAsync(url: URL) async -> Result { await withCheckedContinuation { cont in fetchCallback(url) { result in cont.resume(returning: result) } } } ```

Mengonversi Kode Asinkron menjadi Tipe Hasil

```swift func asResult(of operation: () async throws -> T) async -> Result { do { return .success(try await operation()) } catch { return .failure(error) } } let r = await asResult { try await fetch(url) } ```

`Result.get()` dalam Konteks Asinkron

```swift func process() async { let result: Result = await fetchAsync(url) do { let data = try result.get() handle(data) } catch { handle(error) } } ```

Task { } untuk Menjembatani

```swift func load() { Task { let data = try await fetchAsync(url) await MainActor.run { self.render(data) } } } ```

AsyncStream dari Panggilan Balik

```swift func events() -> AsyncStream { AsyncStream { cont in let token = subscribe { event in cont.yield(event) } cont.onTermination = { _ in unsubscribe(token) } } } ```

Aturan Keamanan Kelanjutan

• Panggil `resume` tepat satu kali — memanggilnya dua kali menghasilkan perilaku yang tidak terdefinisi • Jangan panggil `resume` setelah fungsi mengembalikan nilai • Gunakan `withCheckedContinuation` dalam mode penelusuran kesalahan (untuk mendeteksi kekeliruan); gunakan `withUnsafeContinuation` dalam versi rilis jika diperlukan demi kinerja

MainActor untuk Memperbarui Antarmuka Pengguna

```swift await MainActor.run { label.text = data.description } // or: @MainActor func updateUI(_ d: Data) { label.text = ... } await updateUI(data) ```

Pengujian Asinkron+Hasil

```swift func testFetch() async throws { let result = await asResult { try await fetchAsync(url) } switch result { case .success(let d): XCTAssertFalse(d.isEmpty) case .failure(let e): XCTFail(e.localizedDescription) } } ```

Pemeriksaan Cepat

Jenis continuation mana yang mendeteksi penyalahgunaan seperti pemanggilan resume dua kali dalam build debug?

Ringkasan

Inti pembelajaran: • `withCheckedThrowingContinuation` menjembatani callback ke operasi asinkron yang dapat melempar galat • `cont.resume(with: result)` menerima Result secara langsung • Bungkus `async throws` dalam `Result` menggunakan fungsi pembantu • Panggil `resume` tepat satu kali • `MainActor.run { }` untuk memperbarui antarmuka pengguna dengan aman dari konteks asinkron Kursus selesai! Selanjutnya: dasar-dasar SwiftUI.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menjembatani Result ke async/await” gratis?

Ya — teks lengkap “Menjembatani Result ke async/await” 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 4 pelajaran total.

Apa yang akan aku pelajari di “Menjembatani Result ke async/await”?

Mengubah API Result berbasis callback menjadi fungsi async yang dapat melempar error. 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 4 dari 4.

Berapa lama pelajaran “Menjembatani Result ke async/await” 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. Dasar-Dasar Result
  2. map dan flatMap pada Result
  3. Tipe Error Kustom dengan LocalizedError
  4. Menjembatani Result ke async/await
← Kembali ke Swift Academy