Выполнение first()
возвращает функцию, которая принимает наблюдаемое и возвращает наблюдаемое.
Давайте разберем эту строку кода, чтобы ее было легче понять.
first()(of(1, 2, 3)).subscribe((v) => console.log(`value: ${v}`));
Следующее код эквивалентен приведенной выше строке:
const myFunction = first();
const source$ = of(1, 2, 3);
const output$ = myFunction(source$);
output$.subscribe(v => console.log(`value: ${v}`)); // value: 1
Итак, myFunction
- это функция, а именно OperatorFunction
, которая по существу выглядит так:
function myFunction(source: Observable): Observable { }
Как они сливаются вместе в новом наблюдаемом?
На самом деле они не «сливаются вместе», first()
генерирует функцию, а затем вы выполняете эту функцию с source$
в качестве входного параметра.
Результирующий output$
- еще одна наблюдаемая, на которую можно подписаться.