asyncExpand
- Dart kursu
- İleri seviye
- Ders 17/83
- 5 dk
asyncExpand ile Stream zincirleme öğrenirsin.
asyncExpand
asyncExpand(fn), her öğeyi yeni bir stream'a dönüştürüp bu stream'ları sırayla birleştirir. Her iç stream tamamlanmadan sıradakine geçilmez.
expand'tan farkı: expand senkron olarak her öğeyi Iterable'a çevirir; asyncExpand ise her öğeyi Stream'a çevirir ve asenkron bekler.
Kullanım: her öğe için bir API çağrısı yap ve sonuçları sırayla işle. Örnek: ids.asyncExpand((id) => fetchUserStream(id)).
asyncExpand örneği
Stream.fromIterable([1, 2]).asyncExpand((x) => Stream.fromIterable([x, x * 10])) şu çıktıyı üretir: 1, 10, 2, 20. Her öğe için iç stream tamamen tüketilir, sonra sıradaki öğeye geçilir.
Bu, sıralı asenkron zincirler için idealdir. Örneğin sayfa numaralarını stream'dan alıp her biri için bir API sayfası yüklemek.
Paralel çalışma istiyorsan Future.wait ile Future listesi kullan; asyncExpand sıralıdır.
Uygulama asyncExpand ile öğeleri çoğalt
main'i async yap. var s = Stream.fromIterable([1, 2]); ekle. await s.asyncExpand((x) => Stream.fromIterable([x, x * 10])).forEach(print); ekle.
Başlangıç kodu
void main() {
// async yap; [1,2] stream'ı oluştur; asyncExpand ile her öğeyi [x, x*10] stream'ına çevir; forEach ile yazdır
}Örnek çözüm
void main() async {
var s = Stream.fromIterable([1, 2]);
await s.asyncExpand((x) => Stream.fromIterable([x, x * 10])).forEach(print);
}Beklenen çıktı
1 10 2 20
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 asyncExpand çağrısı
var t = s.____((x) => Stream.fromIterable([x, x]));
var t = s.asyncExpand((x) => Stream.fromIterable([x, x]));
Açıklama: asyncExpand her öğeyi stream'a çevirir.
2 Metotları eşleştir
| Kavram | Anlamı |
|---|---|
asyncExpand |
Öğe → Stream |
expand |
Öğe → Iterable |
asyncMap |
Öğe → Future |
map |
Öğe → değer |
3 asyncExpand nasıl davranır?
- İç stream'ları sırayla birleştirir Doğru cevap
- Yalnızca ilk öğeyi alır
- Tüm iç stream'ları paralel işler
- Hataları yok sayar
Açıklama: asyncExpand iç stream'ları sırayla birleştirir.