flatMapLatest
- Kotlin kursu
- İleri seviye
- Ders 11/83
- 5 dk
flatMapLatest ile en son akış öğrenirsin.
flatMapLatest nedir?
flatMapLatest, kaynak akışından gelen her değer için yeni bir akış başlatır; yeni bir değer geldiğinde önceki akışı iptal edip en yeniyi başlatır. Arama önerileri gibi son değere odaklanan senaryolarda uygundur.
Örnek: queryFlow.flatMapLatest { query -> searchFlow(query) }. Kullanıcı hızla yazarken önceki sorgu henüz bitmeden yenisi gelirse, eski sonuç iptal edilir. Bu, gereksiz ağ çağrılarını keser ve son sorguya odaklanır. flatMapMerge ile karşılaştırınca burada yalnızca bir iç akış aynı anda çalışır.
Uygulama flatMapLatest ile akışları birleştir
flowOf(1, 2).flatMapLatest { value -> flowOf(value * 10) }.collect { result -> println("Sonuç: $result") } yaz. Her değer için yeni bir iç akış başlar.
Başlangıç kodu
// flatMapLatest kullan
// buraya yaz
fun main() = runBlocking {
}Örnek çözüm
fun main() = runBlocking {
flowOf(1, 2).flatMapLatest { value ->
flowOf(value * 10)
}.collect { result ->
println("Sonuç: $result")
}
}Beklenen çıktı
Sonuç: 10 Sonuç: 20
flatMapLatest vs flatMapMerge
flatMapLatest aynı anda yalnızca bir iç akış çalıştırır; yeni değer gelince önceki iptal olur. flatMapMerge ise iç akışları paralel başlatır ve sonuçları karmaşık sırayla birleştirir.
Arama önerileri için flatMapLatest uygun: kullanıcı durmadan yazarken yalnızca son sorgu çalışır. Paralel veri çekme için flatMapMerge daha verimli: birkaç kaynaktan eşzamanlı veri alıp birleştirirsin. flatMapConcat ise iç akışları sırayla işler; önceki bitmeden diğerine geçmez. Üç operatör farklı gereksinimlere uyar.
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 flatMapLatest ne yapar?
- Tüm iç akışları paralel çalıştırır
- Sırayla tüm iç akışları işler
- Yeni değer gelince önceki iç akışı iptal eder Doğru cevap
- Hiç iç akış başlatmaz
Açıklama: flatMapLatest yeni değer geldiğinde önceki iç akışı iptal eder.
2 flatMapLatest parçalarını eşle
| Kavram | Anlamı |
|---|---|
flatMapLatest |
İç akış başlatır |
önceki iç akış |
İptal edilir |
en son değer |
Öncelikli |
tek iç akış |
Aynı anda |
3 flatMapLatest çağrısını tamamla
flow.____ { query -> flowOf(query) }
flow.flatMapLatest { query -> flowOf(query) }
Açıklama: flatMapLatest ile en son iç akış önceliklenir.