RxJS:如何发出takeWhile评估为false的事件?

时间:2019-04-25 12:31:23

标签: javascript node.js rxjs

我有以下代码:

const kickstart$ = curry((pred, iStream, hStream) =>
    iStream()
    .pipe(
        take(1),
        flatMap(({processId: pid}) => poller$(hStream(pid))),
        takeWhile(pred),
        catchError(x => of(x))
    )
)

一旦takeWhile函数返回false,就可以停止pred语句。问题是,我要发出这些最终值,以便订户可以知道流的最终状态是什么,其中包含status: stoppedstatus: error之类的信息,但之后我希望它结束​​。

如果我仅在自己的status !== "stopped" || status !== "error"中检查takeWhile,那么该最终事件将不会发出。

我还应如何加入最后的比赛?

1 个答案:

答案 0 :(得分:1)

您使用哪个rxjs版本?

已经有一个inclusive last带有布尔标志的takeWhile重载。

takeWhile(pred, true)

如果您使用的是旧版本,则必须做其他一些事情,例如将takeWhile之后的最后一个发出的值确认为

我相信包容性的最后一个是在6.4.0中添加的。