是否有一个订阅流,它不会抛出异常。相反,它会自动取消旧订阅吗?
Is there a single subscription stream, which doesn't throw an exception. Instead it cancels the old subscription automatically?
标题几乎描述了一切。我发现自己经常这样做:
StreamSubscription willDismissPageStreamSubscription;
@override
void initState() {
willDismissPageStreamSubscription?.cancel();
willDismissPageStreamSubscription =
bloc.willDismissPageStream(widget.pageIndex).listen((willDismiss) {});
}
我在一个可以多次调用的方法中监听一个流。如果我不取消订阅,它会在每次调用 initState 时创建一个新订阅。我想知道是否有一个 Stream,谁允许这样做,每次通过调用 listen 创建一个新的 StreamSubscription,旧的订阅被取消:
@override
void initState() {
bloc.willDismissPageStream(widget.pageIndex).listen((willDismiss) {});
}
编辑:我正在或多或少地搜索 Single-Subscription-Stream,但它应该取消最后一个 StreamSubscription 而不是抛出异常。
编辑 2:如果这样的 Stream 不存在,我将如何创建它?
通常,您不希望新订阅改变旧订阅。它使可观察量难以推理。
这是一个串行模式,一般使用SerialDisposable来实现。调用 set
自动取消之前的订阅。
SerialDisposable serial = new SerialDisposable();
@override
void initState() {
serial.set(bloc.willDismissPageStream(widget.pageIndex).listen((willDismiss) {}));
}
如果您希望 Observable 中有此行为,您可以发送已完成的通知而不是导致管道拆卸的错误,但我不推荐这样做。
标题几乎描述了一切。我发现自己经常这样做:
StreamSubscription willDismissPageStreamSubscription;
@override
void initState() {
willDismissPageStreamSubscription?.cancel();
willDismissPageStreamSubscription =
bloc.willDismissPageStream(widget.pageIndex).listen((willDismiss) {});
}
我在一个可以多次调用的方法中监听一个流。如果我不取消订阅,它会在每次调用 initState 时创建一个新订阅。我想知道是否有一个 Stream,谁允许这样做,每次通过调用 listen 创建一个新的 StreamSubscription,旧的订阅被取消:
@override
void initState() {
bloc.willDismissPageStream(widget.pageIndex).listen((willDismiss) {});
}
编辑:我正在或多或少地搜索 Single-Subscription-Stream,但它应该取消最后一个 StreamSubscription 而不是抛出异常。
编辑 2:如果这样的 Stream 不存在,我将如何创建它?
通常,您不希望新订阅改变旧订阅。它使可观察量难以推理。
这是一个串行模式,一般使用SerialDisposable来实现。调用 set
自动取消之前的订阅。
SerialDisposable serial = new SerialDisposable();
@override
void initState() {
serial.set(bloc.willDismissPageStream(widget.pageIndex).listen((willDismiss) {}));
}
如果您希望 Observable 中有此行为,您可以发送已完成的通知而不是导致管道拆卸的错误,但我不推荐这样做。