And*_*ltz 25
就在这里.
FlatMap.
假设您有一个Observable数字(1,2,3,4,5,...),并且您希望过滤偶数并将它们映射到x*10.
var tenTimesEvenNumbers = numbers.flatMap(function (x) {
if (x % 2 === 0) {
return Rx.Observable.just(x * 10);
} else {
return Rx.Observable.empty();
}
});
Run Code Online (Sandbox Code Playgroud)
从rxjs v6.6.7开始,解决方案变成如下:
// Initialise observable with some numbers
const numbers = of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// Pipe the observable using mergeMap
const tenTimesEvenNumbers = numbers.pipe(
mergeMap((x: number) => {
// If the number is even, return an observable containing the number multiplied by ten
// Otherwise return an empty observable
return x % 2 === 0 ? of(x * 10) : EMPTY;
})
);
// Subscribe to the observable and print the values
tenTimesEvenNumbers.subscribe((value: number) =>
console.log('Value:', value)
);
Run Code Online (Sandbox Code Playgroud)
上面将打印:
Run Code Online (Sandbox Code Playgroud)Value: 20 Value: 40 Value: 60 Value: 80 Value: 100
这也是一个正在运行的stackblitz。
| 归档时间: |
|
| 查看次数: |
7504 次 |
| 最近记录: |