如何在飞镖流上设置背压。 (或 rxDart)
How to set backpressure on dart stream. (or rxDart)
有没有办法在飞镖流上设置背压?
我想实现这样的功能:
- 用户按下按钮。
- 向 PublishSubject 添加数据。
- 即使在处理添加的数据时添加了其他数据,也会被忽略。
我不知道怎么做。
有什么好的方法吗?
Dart Stream 有 built-in 背压(缓冲)。
Stream.periodic(const Duration(milliseconds: 100), (i) => i)
.take(5)
.listen((v) async {
await Future<void>.delayed(const Duration(milliseconds: 500));
print(v);
});
await Future<void>.delayed(const Duration(seconds: 10));
// will print 0, 1, 2, 3, 4
您可以使用 exhaustMap
个 rxdart
到 ignore/drop 个值。
Stream.periodic(const Duration(milliseconds: 100), (i) => i)
.take(5)
.exhaustMap((v) => Rx.timer(v, const Duration(milliseconds: 500)))
.listen(print);
await Future<void>.delayed(const Duration(seconds: 10));
// will print 0
有没有办法在飞镖流上设置背压?
我想实现这样的功能:
- 用户按下按钮。
- 向 PublishSubject 添加数据。
- 即使在处理添加的数据时添加了其他数据,也会被忽略。
我不知道怎么做。
有什么好的方法吗?
Dart Stream 有 built-in 背压(缓冲)。
Stream.periodic(const Duration(milliseconds: 100), (i) => i)
.take(5)
.listen((v) async {
await Future<void>.delayed(const Duration(milliseconds: 500));
print(v);
});
await Future<void>.delayed(const Duration(seconds: 10));
// will print 0, 1, 2, 3, 4
您可以使用 exhaustMap
个 rxdart
到 ignore/drop 个值。
Stream.periodic(const Duration(milliseconds: 100), (i) => i)
.take(5)
.exhaustMap((v) => Rx.timer(v, const Duration(milliseconds: 500)))
.listen(print);
await Future<void>.delayed(const Duration(seconds: 10));
// will print 0