使用 rxjs 运算符是否可以获得倒数第二个值

kar*_*sys 6 rxjs typescript angular

这是使用rxjs运算符的示例代码,我想打印/获取倒数第二个值。

打字稿

import { from } from 'rxjs';
import { map, last } from 'rxjs/operators';

//emit (1,2,3,4,5)
const source = from([1, 2, 3, 4, 5]);
//add 10 to each value
const example = source.pipe(map(val => val + 10)).pipe(last());
//output: 11,12,13,14,15
const subscribe = example.subscribe(val => console.log(val));

Run Code Online (Sandbox Code Playgroud)

目前它可以打印,15但我希望它改为打印14

wen*_*jun 10

您可以使用takeLast()skipLast RxJS 运算符。

takeLast()运营商允许你

count发出源 Observable发出的最后一个值。

skipLast()运营商

跳过count源 Observable 发出的最后一个值。

现在,我们可以组合两个可管道操作符,这样我们将获取最后 2 个计数,并跳过最后一个计数。

import { range, from } from 'rxjs';
import { takeLast, map, skipLast} from 'rxjs/operators';

const source = from([1, 2, 3, 4, 5]);

const example = source
  .pipe(
    map(val => val + 10),
    takeLast(2), 
    skipLast(1)
  );

example.subscribe(res => console.log(res));
Run Code Online (Sandbox Code Playgroud)

这是一个演示