Rxjs仅映射第一个发射

时间:2018-11-21 00:43:38

标签: rxjs

是否有一个运算符可以让我仅映射第一个发射?

类似

import { from } from 'rxjs';
import { mapFirst } from 'rxjs/operators';

const source = from([1, 2, 3, 4, 5]);
const example = source.pipe(mapFirst(val => val + 10));
//output: 11,2, 3, 4, 5

2 个答案:

答案 0 :(得分:1)

如果您要编写用户土地运营商来这样做:

import { OperatorFunction } from "rxjs";
import { map } from "rxjs/operators";

function mapFirst<T, R>(selector: (value: T) => R): OperatorFunction<T, T | R> {
    return map<T, T | R>((value, index) => (index === 0) ? selector(value) : value);
}

然后您将在问题中使用它。

答案 1 :(得分:0)

使用first运算符或take(1)

const source = from([1, 2, 3, 4, 5]);
const example = source.pipe(first());