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?