是否有相當於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. 等同於PosthreadMessage
- 2. 「等同」與「等於」(或「絕對等於」)相同嗎?
- 3. freopen()等效於C++流
- 4. 等待關於流繼續
- 5. Dart流,相當於等待
- 6. 組等同於C#
- 7. Coolite等同於jQuery?
- 8. CompilerServices.Operators等同於C#
- 9. 'gdk_get_default_root_window'等同於Gtk#?
- 10. grails等同於grails.plugin.location
- 11. Mylyn等同於Netbeans?
- 12. DataList等同於WP7?
- 13. ARC等同於autorelease?
- 14. JNA等同於PVOID
- 15. mysqli_info()等同於PDO?
- 16. setTextColor等同於TextInputLayout
- 17. MySQL的IFNULL等同於PHP
- 18. 等同於np.where()的Lua Torch?
- 19. 等同於此Makefile的Windows
- 20. 等同於Office.js中的Office.Application.CompareDocuments
- 21. iPhone的等同於-doCommandBySelector:?
- 22. 等同於OutputDebugString()的OS X?
- 23. 等同於JComponent.setDefaultLocale()的SWT/JFace?
- 24. jQuery.fn.jquery等同於jQuery Mobile?
- 25. C法FREAD()等同於C#
- 26. 現代等同於DPMI
- 27. ActiveModel等同於ActiveRecord has_attribute?
- 28. std :: stringstream等同於u32string?
- 29. Git - 等同於「添加」?
- 30. UrlHelper.Action是否等同於UrlHelper.RouteUrl?