我想同时使用处理一个可观察对象列表,flatMap
然后在处理所有内部可观察对象时发出一个空值。有没有一种优雅的方式来实现这一点,即使用单个运算符?
这是示例:
const { of, from } = Rx.Observable;
from([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
.mergeMap(number => multiply(number), 2) // processing two numbers at a time
.last() // waiting for all inner observables to complete
.map(_ => undefined) // casting a value returned by last() to an empty value
.subscribe()
;
function multiply(number) {
return of(number * 2) // multiplying the number
.delay(200) // adding a slight delay
;
}
我知道我可以使用toArray()
或last()
等待所有内部可观察对象完成,但随后我需要使用map()
运算符将其转换为空值(如我上面的示例所示)。
我想,我正在寻找具有以下语义的运算符:emit X when source observable completes
,例如:
from([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
.mergeMap(number => multiply(number), 2)
.emitOnComplete(undefined)
.subscribe(console.log) // we should get undefined here
;