measureInterval은 Publisher가 발행하는 이벤트 간의 시간간격을 측정하는 Operator에요.

기능

사용

1초마다 현재시간을 발행하는 Timer Publisher을 만들어서 시간간격을 표현해볼게요.

먼저 Timer은 다음처럼 준비해요.

let timerPublisher = Timer.publish(every: 1, on: .main, in: .common)
  .autoconnect()
  .prefix(5)

이제 measureInterval로 시간간격을 측정합니다.

timerPublisher
  .measureInterval(using: DispatchQueue.main)
  .sink { value in
    print(value)
  }
  .store(in: &cancellables)
  
  
// 결과
(1초 기다린 후)
Stride(_nanoseconds: 1001213333)
(1초 기다린 후)
Stride(_nanoseconds: 999532250)
(1초 기다린 후)
Stride(_nanoseconds: 999930417)
(1초 기다린 후)
Stride(_nanoseconds: 1000034333)
(1초 기다린 후)
Stride(_nanoseconds: 1000014125)