我有以下代码:
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: stopped
或status: error
之类的信息,但之后我希望它结束。
如果我仅在自己的status !== "stopped" || status !== "error"
中检查takeWhile
,那么该最终事件将不会发出。
我还应如何加入最后的比赛?
答案 0 :(得分:1)
您使用哪个rxjs
版本?
已经有一个inclusive last
带有布尔标志的takeWhile重载。
takeWhile(pred, true)
如果您使用的是旧版本,则必须做其他一些事情,例如将takeWhile
之后的最后一个发出的值确认为
我相信包容性的最后一个是在6.4.0中添加的。