Publishers.Timeout
μ λ€λ¦ ꡬ쑰체
μ΄λμ λΌμ΄μ λ λ€μ― κ°μ μΈμλ₯Ό λ°λλ€.
upstream: μμμ νλ₯΄λ Publisherinterval: νμμμμ μΌμΌν¬ μκ°scheduler: μμλ₯Ό λ°ννλ μ€μΌμ€λ¬options: μ€μΌμ€λ¬ μ΅μ customError: νμμμμ΄ λ°μνμ λ λ°νν μλ¬λ₯Ό λ§λλ ν΄λ‘μ
μμ Publisherμ μ£Όμ΄μ§ μκ° λμ μμκ° μ λ¬λμ§ μμ λ νμμμμ΄ λ°μνμ¬ Publisherλ₯Ό μ’ λ£νλ€.
customErrorκ° nilμ΄λ©΄ μ’
λ£νλ©°, nilμ΄ μλλ©΄ μλ¬λ₯Ό λΈλ€.
timeout μ€νΌλ μ΄ν°μ κ΄λ ¨μ΄ μλ€.
let subject = PassthroughSubject<Int, Error>()
// Publishers.Timeout (customError != nil)
Publishers.Timeout(upstream: subject, interval: .milliseconds(500), scheduler: DispatchQueue.main, options: nil) { error }
.sink(receiveCompletion: { completion in
switch completion {
case .failure:
print("Combine TimeOut Error")
case .finished:
print("Combine TimeOut Finish")
}
}, receiveValue: { value in
print("Combine TimeOut : \(value)")
})
.store(in: &cancellables)
// Combine Timeout Error
// timeout Operator (customError == nil)
subject
.timeout(.milliseconds(500), scheduler: DispatchQueue.main)
.sink(receiveCompletion: { completion in
switch completion {
case .failure:
print("Combine TimeOut Error")
case .finished:
print("Combine TimeOut Finish")
}
}, receiveValue: { value in
print("Combine TimeOut : \(value)")
})
.store(in: &cancellables)
// Combine Timeout Finishsubjectμ κ°μ μ λ¬νλ μ½λκ° μμΌλ―λ‘, μ½λλ₯Ό μ€ννλ©΄ 0.5μ΄ νμ νμμμμ΄ λ°μνλ€.
customErrorλ₯Ό μ μν κ²½μ° νμμμμ΄ λ°μν λ μλ¬λ₯Ό λ΄λ©°, customErrorλ₯Ό μ μνμ§ μμ κ²½μ° νμμμμ΄ λ°μν λ μ’
λ£νλ€.
RxSwift
timeout μ€νΌλ μ΄ν°λ₯Ό μ¬μ©νμ¬ κ΅¬νν μ μλ€.
ReactiveSwift
timeout μ€νΌλ μ΄ν°λ₯Ό μ¬μ©νμ¬ κ΅¬νν μ μλ€.
Last updated
Was this helpful?