CodeBlanks Logo Icon CodeBlanks

flatMapLatest

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

Main.kt
// flatMapLatest kullan
// buraya yaz
fun main() = runBlocking {
    
}

Örnek çözüm

Main.kt
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

Soru
flow.____ { query -> flowOf(query) }
Cevap
flow.flatMapLatest { query -> flowOf(query) }

Açıklama: flatMapLatest ile en son iç akış önceliklenir.

İleri seviye bölümündeki tüm dersler