ReactiveX / rxdart

The Reactive Extensions for Dart
http://reactivex.io
Apache License 2.0
3.36k stars 271 forks source link

throttled stream ignores the close command #709

Open aurokk opened 1 year ago

aurokk commented 1 year ago

Hey! I was playing around with rxdart and faced a problem. When throttleTime is used then the stream ignores the close command. Is that by design or I'm doing sth wrong?

I use the latest versions of rxdart (0.27.7)/flutter (3.3.10) :-)

// WORKS

main() async {
  final c = StreamController<String>();
  Future.delayed(Duration(seconds: 5)).then((f) => c.close());
  final s = c.stream;
  print("start");
  await for (var _ in s) {
    print("loop");
  }
  print("end");
}

// WORKS

main() async {
  final c = StreamController<String>();
  Future.delayed(Duration(seconds: 5)).then((f) => c.close());
  final s = c.stream.debounceTime(Duration(seconds: 1));
  print("start");
  await for (var _ in s) {
    print("loop");
  }
  print("end");
}

// DOESN'T WORK, NEVER REACHES THE END

main() async {
  final c = StreamController<String>();
  Future.delayed(Duration(seconds: 5)).then((f) => c.close());
  final s = c.stream.throttleTime(Duration(seconds: 1));
  print("start");
  await for (var _ in s) {
    print("loop");
  }
  print("end");
}