İnsanlar şu tanımları vererek işleri karmaşıklaştırma eğilimindedir :
flatMap, bir Gözlemlenebilir tarafından yayılan öğeleri Gözlemlenebilirlere dönüştürür, ardından bunlardan gelen emisyonları tek bir Gözlenebilir
Yemin ederim bu tanım hala kafamı karıştırıyor ama bunu en basit şekilde bir örnekle açıklayacağım
Durumumuz : İhtiyacımız olan verileri içeren bir gözlemlenebilir döndüren bir HTTP çağrısı yapmak için kullanacağımız verileri (basit URL) döndüren bir gözlemlenebilirimiz var, böylece durumu şu şekilde görselleştirebilirsiniz:
Observable 1
|_
Make Http Call Using Observable 1 Data (returns Observable_2)
|_
The Data We Need
Gördüğünüz gibi ihtiyacımız olan verilere doğrudan erişemiyoruz, bu nedenle verileri almanın ilk yolu, bunun gibi normal abonelikleri kullanabiliriz:
Observable_1.subscribe((URL) => {
Http.get(URL).subscribe((Data_We_Need) => {
console.log(Data_We_Need);
});
});
bu işe yarıyor, ancak görebileceğiniz gibi, verilerimizi almak için abonelikleri iç içe yerleştirmemiz gerekiyor, bu şu anda kötü görünmüyor, ancak sürdürülemez hale gelebilecek 10 iç içe geçmiş aboneliğimiz olduğunu hayal edin.
Bu nedenle, bunun üstesinden gelmenin daha iyi bir yolu flatMap
, aynı şeyi yapacak ancak iç içe geçmiş abonelikten kaçınmamızı sağlayan operatörü kullanmaktır :
Observable_1
.flatMap(URL => Http.get(URL))
.subscribe(Data_We_Need => console.log(Data_We_Need));