是否有相當於Observable.Throttle的Streams?如果沒有 - 是否有任何合理的優雅方式來實現類似的效果?等同於Observable.Throttle的流?
4
A
回答
2
的rate_limit package提供Streams的節流和消除。
3
現在還沒有這樣的流式方法。一個增強請求已被提交,您可以登錄issue 8492。
但是,您可以使用where方法來做到這一點。在下面爲例,我已經定義了一個ThrottleFilter
類忽略定持續時間期間的活動:
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
以下版本更接近於什麼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(_));
//..
}
相關問題
- 1. 逆Observable.Throttle
- 2. 等同於PosthreadMessage
- 3. 「等同」與「等於」(或「絕對等於」)相同嗎?
- 4. freopen()等效於C++流
- 5. 等待關於流繼續
- 6. Dart流,相當於等待
- 7. 什麼是scalaz流等同於播放框架的Enumerator.fromCallback
- 8. __try/__終於等同於UNIX
- 9. CompilerServices.Operators等同於C#
- 10. preg_match_all等同於BASH?
- 11. jQuery等同於mootools $$
- 12. jQuery等同於createElement?
- 13. Java等同於.charCodeAt()
- 14. mysqli_info()等同於PDO?
- 15. setTextColor等同於TextInputLayout
- 16. Coolite等同於jQuery?
- 17. Strings.xml等同於HTML
- 18. ARC等同於autorelease?
- 19. 組等同於C#
- 20. 等同於QEvent ApplicationDeactivate
- 21. ColorMatrix等同於WP7?
- 22. grails等同於grails.plugin.location
- 23. DataList等同於WP7?
- 24. 'gdk_get_default_root_window'等同於Gtk#?
- 25. JNA等同於PVOID
- 26. GCM等同於Firefox
- 27. Mylyn等同於Netbeans?
- 28. SQL PATINDEX等同於PostgreSQL的
- 29. 等同於此Makefile的Windows
- 30. 等同於np.where()的Lua Torch?