signature: find(predicate: function)
조건을 만족하는 첫번째 아이템을 발생시킨 이후, 완료합니다.
// RxJS v6+
import { fromEvent } from 'rxjs';
import { find, repeatWhen, mapTo, startWith, filter } from 'rxjs/operators';
// 엘리먼트 참조
const status = document.getElementById('status');
// 스트림
const clicks$ = fromEvent(document, 'click');
clicks$
.pipe(
find((event: any) => event.target.id === 'box'),
mapTo('Found!'),
startWith('Find me!'),
// 박스 외부를 클릭하면 초기화합니다
repeatWhen(() =>
clicks$.pipe(filter((event: any) => event.target.id !== 'box'))
)
)
.subscribe(message => (status.innerHTML = message));