Existe-t-il un flux équivalent à Observable.Throttle? Si non - existe-t-il un moyen raisonnablement élégant d'obtenir un effet similaire?Streams équivalent à Observable.Throttle?
4
A
Répondre
2
Le rate_limit package fournit étranglement et anti-rebond des Streams.
3
Il n'existe aucune méthode de ce type sur les flux pour le moment. Une demande d'amélioration a été déposée, vous pouvez jouer issue 8492.
Cependant, vous pouvez le faire avec la méthode where. Dans l'exemple suivant, je l'ai défini une classe ThrottleFilter
d'ignorer les événements pendant une durée donnée:
import 'dart:async';
class ThrottleFilter<T> {
DateTime lastEventDateTime = null;
final Duration duration;
ThrottleFilter(this.duration);
bool call(T e) {
final now = new DateTime.now();
if (lastEventDateTime == null ||
now.difference(lastEventDateTime) > duration) {
lastEventDateTime = now;
return true;
}
return false;
}
}
main() {
final sc = new StreamController<int>();
final stream = sc.stream;
// filter stream with ThrottleFilter
stream.where(new ThrottleFilter<int>(const Duration(seconds: 10)).call)
.listen(print);
// send ints to stream every second, but ThrottleFilter will give only one int
// every 10 sec.
int i = 0;
new Timer.repeating(const Duration(seconds:1), (t) { sc.add(i++); });
}
1
La version suivante est plus proche de ce que fait Observable.Throttle:
class Throttle extends StreamEventTransformer {
final duration;
Timer lastTimer;
Throttle(millis) :
duration = new Duration(milliseconds : millis);
void handleData(event, EventSink<int> sink) {
if(lastTimer != null){
lastTimer.cancel();
}
lastTimer = new Timer(duration,() => sink.add(event));
}
}
main(){
//...
stream.transform(new Throttle(500)).listen((_) => print(_));
//..
}
Questions connexes
- 1. un inverse Observable.Throttle
- 2. configurer linux out streams
- 3. Pipes to C++ Streams
- 4. Streams et Compression
- 5. Threads, Sockets and Streams
- 6. Streams, Buffer en Java
- 7. Réutiliser Streams mémoire
- 8. PHP: fopen vs streams
- 9. Streams sécurisés en Java
- 10. Streams en Common Lisp?
- 11. WSO2 CEP STREAMS
- 12. ressources Unreleased: Streams
- 13. Node.js throttle streams
- 14. C++ 11 File Streams
- 15. java.nio channels buffers streams terminologie
- 16. Akka Streams Graph Notation DSL
- 17. CUDA streams et le contexte
- 18. DirectX9 Index Buffers & Multiple Streams
- 19. Java 8 streams et varargs
- 20. Question sur XMLTextWriters and Streams
- 21. Téléchargeur téléchargeable utilisant fetch streams
- 22. Une source à plusieurs puits en utilisant Akka Streams
- 23. ActivityStream.ms/Activity Streams et le verbe "Share"
- 24. BLOBs, Streams, Byte Arrays et WCF
- 25. iPhone Socket Streams et adresses IP valides
- 26. Montrez-moi un exemple simple d'Oracle Streams?
- 27. Nodejs and Streams - Un aperçu détaillé?
- 28. En cours d'exécution Scala FS2 Streams
- 29. traitant de Streams et ContentProducer - Java
- 30. Java Streams v .Net (C#) LINQ