home강의 홈으로
Section 2. Operator - RxJS의 다양한 연산자들
Lesson 4. 시간을 다루는 연산자들 1
<script src="https://unpkg.com/@reactivex/rxjs/dist/global/rxjs.umd.js"></script>
시간을 다루는 Operator 1
delay : 주어진 시간만큼 지연 발행
const { interval, fromEvent } = rxjs
const { delay, tap, take } = rxjs.operators
interval(1000).pipe(
take(5),
tap(x => console.log(x + ' 발행시작')),
delay(1500)
).subscribe(x => console.log(x + ' 발행완료'))
fromEvent(document, 'click').pipe(
tap(e => console.log(e.x + ' 발행시작')),
delay(1500)
).subscribe(e => console.log(e.x + ' 발행완료'))
const { fromEvent } = rxjs
const { timestamp, pluck, map } = rxjs.operators
fromEvent(document, 'click').pipe(
pluck('x'),
timestamp()
).subscribe(console.log)
fromEvent(document, 'click').pipe(
pluck('x'),
timestamp(),
map(x => {
x.timestamp = new Date(x.timestamp).toString()
return x
})
).subscribe(console.log)
const { fromEvent, interval } = rxjs
const { timeInterval, pluck } = rxjs.operators
fromEvent(document, 'click').pipe(
pluck('x'),
timeInterval()
).subscribe(console.log)
interval(1000).pipe(
timeInterval()
).subscribe(console.log)
timeout : 주어진 시간 내 다음 값 미발행 시 오류
const { fromEvent } = rxjs
const { ajax } = rxjs.ajax
const { timeout, pluck } = rxjs.operators
fromEvent(document, 'click').pipe(
timeout(3000)
).subscribe(
_ => console.log('OK'),
err => console.error(err))
ajax('http://127.0.0.1:3000/people/name/random').pipe(
pluck('response'),
timeout(500)
).subscribe(console.log, console.error)
timeoutWith : 주어진 시간 내 다음 값 미발행 시 다른 Observable 개시
const { fromEvent, interval, of } = rxjs
const { ajax } = rxjs.ajax
const { timeoutWith, pluck, scan } = rxjs.operators
fromEvent(document, 'click').pipe(
timeoutWith(3000, interval(1000)),
scan((acc, x) => { return acc + 1 }, 0)
).subscribe(console.log)
ajax('http://127.0.0.1:3000/people/name/random').pipe(
pluck('response'),
timeoutWith(500, of({
id: 0,
first_name: 'Hong',
last_name: 'Gildong',
role: 'substitute'
}))
).subscribe(console.log, console.error)
🤔얄코에게 질문하기질문은 반.드.시 이리로 보내주세요! ( 강의사이트 질문기능 ✖ )
🛑질문 전 필독!!
- 구글링을 먼저 해 주세요. 들어오는 질문의 절반 이상은 구글에 검색해 보면 1분 이내로 답을 찾을 수 있는 내용들입니다.
- 오류 메시지가 있을 경우 이를 구글에 복붙해서 검색해보면 대부분 짧은 시간 내 해결방법을 찾을 수 있습니다.
- 강의 페이지에 추가사항 등 놓친 부분이 없는지 확인해주세요. 자주 들어오는 질문은 페이지에 추가사항으로 업데이트됩니다.
- "유료파트의 강의페이지는 어디 있나요?" - 각 영상의 시작부분 검은 화면마다 해당 챕터의 강의페이지 링크가 있습니다.
- 질문을 보내주실 때는 문제가 어떻게 발생했고 어떤 상황인지 등을 구체적으로 적어주세요. 스크린샷을 첨부해주시면 더욱 좋습니다.