Section 16/162 menit
16. Ringkasan & Decision Guide
16. Ringkasan & Decision Guide
Pilih Operator yang Tepat
| Kebutuhan | Operator |
|---|---|
| Gabung dua stream secara bersamaan (pair) | zip(_:) |
| Gabung dua stream secara interleaved | merge(_:) |
| Gabung stream secara serial (A selesai dulu, baru B) | chain(_:_:) |
| React ke perubahan di mana saja dari beberapa source | combineLatest(_:) |
| Tunggu input berhenti sebelum proses | debounce(for:clock:) |
| Batasi frekuensi output | throttle(for:clock:reducing:) |
| Kumpulkan N elemen per batch | chunks(ofCount:) |
| Kumpulkan elemen per window waktu | chunked(by: .repeating(every:)) |
| Hapus nil dari stream | compacted() |
| Hapus duplikat berturutan | removeDuplicates() |
| Akumulasi running total | reductions(_:_:) |
| Bandingkan elemen berurutan | adjacentPairs() |
| Back-pressure aware channel | AsyncChannel |
Decision Table
| Kondisi | Rekomendasi |
|---|---|
| iOS 16+, project sudah pakai Swift Concurrency | Swift Async Algorithms — fit natural |
| iOS 15 atau lebih lama | Combine atau manual AsyncStream |
| Butuh debounce/throttle di search | Swift Async Algorithms — sangat cocok |
| Butuh retry dan catch operator | Combine atau implementasi manual |
Punya banyak @Published + Combine chain |
Tetap di Combine atau migrasi bertahap |
| Project baru, Swift 6 strict concurrency | Swift Async Algorithms — sudah fully compatible |
| Streaming data dari server (WebSocket/SSE) | Async Algorithms + AsyncChannel sangat cocok |
Swift Async Algorithms adalah investment yang tepat untuk project yang sudah committed ke Swift Concurrency. Mulai dengan mengkonversi satu pipeline sederhana — misalnya search debounce — untuk merasakan perbedaannya versus implementasi manual. Package ini terus berkembang; operator seperti retry dan catch kemungkinan akan ditambahkan di versi berikutnya.
Langkah selanjutnya: pelajari Swift Concurrency (entry #1) untuk fondasi AsyncSequence, dan AsyncStream untuk membuat custom producers yang bisa dipakai bersama Async Algorithms.