CodeBlanks Logo Icon CodeBlanks

asyncExpand

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

main.dart
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

main.dart
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ı

Soru
var t = s.____((x) => Stream.fromIterable([x, x]));
Cevap
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.

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