Publishers.MeasureInterval
μ λ€λ¦ ꡬ쑰체 | μμ Publisherλ‘λΆν° μ λ¬λ°μ μ΄λ²€νΈλ€ μ¬μ΄μ μκ° κ°κ²©μ μΈ‘μ νκ³ λ°°μΆνλ Publisher
μ΄λμ λΌμ΄μ λ λ κ°μ μΈμλ₯Ό λ°λλ€.
upstream
: μμμ νλ₯΄λ Publisherscheduler
: μμλ₯Ό μ λ¬νλ μ€μΌμ€λ¬
μ΄λ²€νΈκ° μΌμ΄λλ μκ°μ κ°κ²©μ μΈ‘μ νμ¬ λ°ννλ€.
measureInterval
μ€νΌλ μ΄ν°μ κ΄λ ¨μ΄ μλ€.
let subject = PassthroughSubject<Void, Never>()
// Publishers.MeasureInterval Publisher
Publishers.MeasureInterval(upstream: subject, scheduler: DispatchQueue.main)
.sink(receiveCompletion: { completion in
switch completion {
case .failure:
print("Combine MeasureInterval Error")
case .finished:
print("Combine MeasureInterval Finish")
}
}, receiveValue: { value in
print("Combine MeasureInterval : \(value.timeInterval)")
})
.store(in: &cancellables)
// measureInterval Operator
subject
.measureInterval(using: DispatchQueue.main)
.sink(receiveCompletion: { completion in
switch completion {
case .failure:
print("Combine MeasureInterval Error")
case .finished:
print("Combine MeasureInterval Finish")
}
}, receiveValue: { value in
print("Combine MeasureInterval : \(value.timeInterval)")
})
.store(in: &cancellables)
Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { _ in
subject.send(Void())
}
// Combine MeasureInterval : nanoseconds(100535457)
// Combine MeasureInterval : nanoseconds(101047592)
// Combine MeasureInterval : nanoseconds(99104295)
// ...
0.1μ΄λ§λ€ subject
μ Void κ°μ μ λ¬νλλ‘ νμλ€.
μ΄λ²€νΈ κ°μ 0.1μ΄ μΈμ 리μ μκ° κ°κ²©μ΄ λ°μνμ¬ μκ° κ°κ²©μ΄ κ°μΌλ‘ λ°νλλ€.
RxSwift
ν΄λΉ λμμ ꡬννκΈ° μν μ€νΌλ μ΄ν°λ₯Ό μ 곡νμ§ μλλ€.
ReactiveSwift
ν΄λΉ λμμ ꡬννκΈ° μν μ€νΌλ μ΄ν°λ₯Ό μ 곡νμ§ μλλ€.
μ°Έκ³
Last updated
Was this helpful?