在另一个流完成之后发出值的正确方法是什么?

时间:2019-03-30 16:33:01

标签: rxjs ionic3

我正在尝试“思考流”。在流A完成后向B发送值的正确方法是什么?

我当前的实现如下:

streamADelete$(data)
 .do(() => dismiss())
 .subscribe(() => streamB$.next()) // this seems wrong!

对我来说,此实现存在问题

1 个答案:

答案 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,还是遵循一些旧教程?)