Dav*_*vid 7 dart reactive rxdart
我想从 dart 中具有特定延迟的列表中发出流中的值。
因此,从 [1,2,3](这是一个常规列表)中,我想像在单独的事件中一样发出值1...2...3。
我尝试过这样的事情
List<int> myList = [1,2,3];
Subject _current = BehaviorSubject<int>();
Stream<int> get current$ => _current.stream.delay(Duration(seconds:1));
myList.forEach(current.add);
Run Code Online (Sandbox Code Playgroud)
但我得到...123的是,所以这将整个流延迟 1 秒,而不是列表中的每个值。
有任何想法吗?谢谢
如果您想避免 rxdart,您可以使用简单的转换函数,例如:
Stream<T> streamDelayer<T>(Stream<T> inputStream, Duration delay) async* {
await for (final val in inputStream) {
yield val;
await Future.delayed(delay);
}
}
void main() {
var s = Stream.fromIterable([1, 2, 3]);
streamDelayer(s, Duration(seconds: 1)).forEach(print);
}
Run Code Online (Sandbox Code Playgroud)
rxdart
包提供了一个延迟变压器或方法来做到这一点
Run Code Online (Sandbox Code Playgroud)new Observable.fromIterable([1, 2, 3, 4]) .delay(new Duration(seconds: 1)) .listen(print); // [after one second delay] prints 1, 2, 3, 4 immediately
还有其他类似debounce的
| 归档时间: |
|
| 查看次数: |
4365 次 |
| 最近记录: |