我正在尝试“思考流”。在流A完成后向B发送值的正确方法是什么?
我当前的实现如下:
streamADelete$(data)
.do(() => dismiss())
.subscribe(() => streamB$.next()) // this seems wrong!
对我来说,此实现存在问题
答案 0 :(得分:1)
如果您的主要目标是调用streamB.next(),但在subscription块之前的某个位置,则正确的位置将是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,还是遵循一些旧教程?)