在 RxJS 中环回可观察?
Loop back observable in RxJS?
这个例子有点绕,但我想知道如何在 RxJs 中执行以下操作:在管道中的某个部分之后,将值反馈到管道的较早部分,因此它会得到再次处理。
of(1, 2, 3, 4, 5).pipe(
map(x => x + 1),
map(x => x + 1),
filter(x => x % 2),
// refeed after the first map but before the second
)
下面是您可以如何使用 expand 执行此操作的示例:
function isEven(x) {
return x % 2 == 0
}
of(1, 2, 3, 4, 5).pipe(
map(x => x + 1),
expand(x => of(x).pipe(
map(x => x + 1),
filter(isEven)
))
);
下面是编写递归函数的方法:
function isEven(x) {
return x % 2 == 0
}
function loopBack(x : number) {
return of(x).pipe(
map(x => x + 1),
filter(isEven),
mergeMap(loopBack),
startWith(x)
);
}
of(1, 2, 3, 4, 5).pipe(
map(x => x + 1),
mergeMap(loopBack),
);
这个例子有点绕,但我想知道如何在 RxJs 中执行以下操作:在管道中的某个部分之后,将值反馈到管道的较早部分,因此它会得到再次处理。
of(1, 2, 3, 4, 5).pipe(
map(x => x + 1),
map(x => x + 1),
filter(x => x % 2),
// refeed after the first map but before the second
)
下面是您可以如何使用 expand 执行此操作的示例:
function isEven(x) {
return x % 2 == 0
}
of(1, 2, 3, 4, 5).pipe(
map(x => x + 1),
expand(x => of(x).pipe(
map(x => x + 1),
filter(isEven)
))
);
下面是编写递归函数的方法:
function isEven(x) {
return x % 2 == 0
}
function loopBack(x : number) {
return of(x).pipe(
map(x => x + 1),
filter(isEven),
mergeMap(loopBack),
startWith(x)
);
}
of(1, 2, 3, 4, 5).pipe(
map(x => x + 1),
mergeMap(loopBack),
);