在另一个流完成后发出值的正确方法是什么?
What is the correct way to emit a value after another stream has completed?
我正在尝试 'think in streams'。在流 A 完成后向流 B 发出值的正确方法是什么?
我目前的实现如下:
streamADelete$(data)
.do(() => dismiss())
.subscribe(() => streamB$.next()) // this seems wrong!
对我来说,这个实现有问题
如果您的主要目标是调用 streamB.next(),但在订阅块之前的某处,那么正确的位置是 tap() 运算符,它用于产生副作用.
streamADelete$(data)
.pipe(
tap(() => streamB$.next()),
// Continue with your next operator
)
虽然这看起来确实很奇怪,但我们通常能够在不产生副作用的情况下完成大部分事情。我不确定您的用例是什么,但另一种可能有用的模式可能是将您的流分成两部分,如下所示:
streamADelete$.pipe(
// Do whatever you want to do in your original stream here
)
.subscribe();
streamADelete$.pipe(
// Do whatever you wanted to do in you streamB$ stream here
)
.subscribe();
(你的 RxJS 似乎也有点奇怪,你使用的是旧版本的 RxJS / 遵循一些旧教程吗?)
我正在尝试 'think in streams'。在流 A 完成后向流 B 发出值的正确方法是什么?
我目前的实现如下:
streamADelete$(data)
.do(() => dismiss())
.subscribe(() => streamB$.next()) // this seems wrong!
对我来说,这个实现有问题
如果您的主要目标是调用 streamB.next(),但在订阅块之前的某处,那么正确的位置是 tap() 运算符,它用于产生副作用.
streamADelete$(data)
.pipe(
tap(() => streamB$.next()),
// Continue with your next operator
)
虽然这看起来确实很奇怪,但我们通常能够在不产生副作用的情况下完成大部分事情。我不确定您的用例是什么,但另一种可能有用的模式可能是将您的流分成两部分,如下所示:
streamADelete$.pipe(
// Do whatever you want to do in your original stream here
)
.subscribe();
streamADelete$.pipe(
// Do whatever you wanted to do in you streamB$ stream here
)
.subscribe();
(你的 RxJS 似乎也有点奇怪,你使用的是旧版本的 RxJS / 遵循一些旧教程吗?)