我有一个副作用Observable,需要在主要Observable完成之前解决。如果是同步操作,则可以使用tap()
运算符。异步操作是否有明确的等效项?
在下面的示例中,我必须将内部值映射回我实际要通过管道传递的外部值。我将如何避免这种映射?
const user = requestUser().pipe(
switchMap(user => {
return requestAndAssignToken(user)
.pipe(
map(token => user)
);
})
);
答案 0 :(得分:3)
如果我的理解正确,您想忽略内部Observable的结果,而只让外部Observable等待其发射,然后继续操作。
在这种情况下,我建议使用delayWhen
运算符。它传递了一个delayDurationSelector
并返回一个Observable(duration Observable
)。然后,它的行为类似于stated in the documentation:
仅当Observable持续时间发出值或完成时,才在Observable输出上发出源值
以您的示例为例:
const user = requestUser().pipe(
delayWhen(user => requestAndAssignToken(user))
);