CodeBlanks Logo Icon CodeBlanks

debounce ve throttle

debounce ve throttle öğrenirsin.

debounce ve throttle

debounce: akış sessizleşene kadar bekler, sonra son öğeyi iletir. Arama kutularında her tuş vuruşunu sunucuya göndermemek için kullanılır.

throttle: belirli bir süre boyunca yalnızca bir öğe iletir, diğerlerini düşürür. Scroll ve resize olaylarını sıkıştırmak için idealdir.

İkisi de rxdart paketinde debounceTime ve throttleTime olarak bulunur. Saf Dart'ta zamanlayıcı ve asyncExpand ile elle yazılabilir.

Basit throttle: take

.take(n), bir stream'ın ilk n öğesini alıp geri kalanını düşürür. Bu, en basit throttle formudur: süreye değil sayıya göre sınırlama.

Örnek: Stream.fromIterable([1, 2, 3, 4]).take(2) yalnızca 1 ve 2'yi iletir; 3 ve 4 hiç üretilmez (tembel akış).

Gerçek zaman bazlı throttle için rxdart'ın throttleTime'ı ya da zamanlayıcı tabanlı özel transformer kullanılır.

Uygulama take ile ilk iki öğeyi al

main'i async yap. var s = Stream.fromIterable([1, 2, 3, 4]); ekle. await s.take(2).forEach(print); ekle.

Başlangıç kodu

main.dart
void main() {
  // async yap; [1,2,3,4] stream'ı oluştur; take(2) ile ilk ikisini al; forEach ile yazdır
}

Örnek çözüm

main.dart
void main() async {
  var s = Stream.fromIterable([1, 2, 3, 4]);
  await s.take(2).forEach(print);
}

Beklenen çıktı

1
2

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Kavramları eşleştir

Kavram Anlamı
debounce Sessizlik sonrası son öğe
throttle Süre başına bir öğe
Arama kutusu debounce kullanımı
Scroll throttle kullanımı

2 Arama kutusu için hangisi uygundur?

  • throttle
  • take
  • debounce Doğru cevap
  • skip

Açıklama: debounce kullanıcı yazmayı bırakınca son sorguyu gönderir.

3 İlk iki öğeyi al

Soru
var t = s.____(2);
Cevap
var t = s.take(2);

Açıklama: take(2) ilk iki öğeyi alır.

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