Menu
Coddy logo textTech

Özet - Veri Getirici

Coddy'nin Dart Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 81 / 110.

challenge icon

Görev

Kolay

Bu bölümdeki tüm eşzamansız OOP kavramlarını bir araya getiren bir DataFetcher sınıfı oluşturalım! Eşzamansız başlatma, tek tek öğeleri getirmek için eşzamansız yöntemler ve zaman içinde birden çok sonuç sunmak için bir akış kullanan bir veri hizmeti oluşturacaksın.

Kodunu iki dosyaya ayıracaksın:

  • data_fetcher.dart: Uzak bir kaynaktan veri getirmeyi taklit eden bir DataFetcher sınıfı oluştur. Sınıfın şunlara sahip olmalı:
    • Verilerin nereden geldiğini saklayan, String adlı bir final source alanı
    • Source'u başlatan özel bir oluşturucu
    • Bir connect(String sourceName) döndüren statik eşzamansız fabrika yöntemi Future<DataFetcher>. 100 milisaniyelik bir bağlantı gecikmesini taklit et, ardından source değeri sağlanan ada ayarlanmış yeni bir örnek döndür
    • Bir fetchItem(int id) döndüren eşzamansız Future<String> yöntemi. 50 milisaniyelik bir gecikmeyi taklit et, ardından şu biçimde bir dize döndür: [source]-Item-[id]
    • Bir fetchMultiple(int count) döndüren akış oluşturucu yöntemi Stream<String>. count yöntemini her öğe için kullanarak 1'den fetchItem değerine kadar (count dahil) olan kimliklere ait öğeleri üretmeli (üretmeden önce her getirme işlemini await et)
  • main.dart: Veri getiricini içe aktar ve üç eşzamansız desenin birlikte çalıştığını göster:
    • Connecting to data source... yazdır
    • CloudDB adlı bir kaynağa bağlanmak için eşzamansız fabrikayı kullan
    • Getiricinin source alanını kullanarak Connected to [source] yazdır
    • Boş bir satır yazdır
    • Fetching single item: yazdır
    • Kimliği 42 olan öğeyi getir ve yazdır
    • Boş bir satır yazdır
    • Fetching multiple items: yazdır
    • await for üzerinde yinelemek ve her öğeyi yazdırmak için fetchMultiple(3) kullan
    • Boş bir satır yazdır
    • All operations complete! yazdır

Bu alıştırma, başlatma için statik eşzamansız fabrika desenini, tekil işlemler için normal eşzamansız yöntemleri ve birden çok sonucu akış olarak sunmak için async* ile yield'i bir araya getirir. Akış yönteminin kendi içinde başka eşzamansız yöntemleri çağırabildiğine dikkat et!

Beklenen çıktı:

Connecting to data source...
Connected to CloudDB

Fetching single item:
CloudDB-Item-42

Fetching multiple items:
CloudDB-Item-1
CloudDB-Item-2
CloudDB-Item-3

All operations complete!

Kendin dene

import 'data_fetcher.dart';

void main() async {
  // TODO: 'Connecting to data source...' yazdırın
  
  // TODO: 'CloudDB' adlı bir kaynağa bağlanmak için async factory kullanın
  
  // TODO: fetcher'ın source alanını kullanarak 'Connected to [source]' yazdırın
  
  // TODO: Boş bir satır yazdırın
  
  // TODO: 'Fetching single item:' yazdırın
  
  // TODO: ID'si 42 olan öğeyi getirin ve yazdırın
  
  // TODO: Boş bir satır yazdırın
  
  // TODO: 'Fetching multiple items:' yazdırın
  
  // TODO: fetchMultiple(3) üzerinden yineleme yapmak ve her bir öğeyi yazdırmak için 'await for' kullanın
  
  // TODO: Boş bir satır yazdırın
  
  // TODO: 'All operations complete!' yazdırın
}

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Dart derleyicisi