debounce는 입력 소스로부터 값이 발행될 때, 지정된 시간동안 기다린 후 마지막으로 발행된 값을 다음 단계로 전달하는 Operator에요.
여기에서는 사용자 입력이 빠르게 들어올 때 debounce를 설정하는 시뮬레이션을 진행해볼게요.
let subject = PassthroughSubject<String, Never>()
subject
.debounce(for: 1, scheduler: DispatchQueue.main)
.sink { value in
print(value)
}
.store(in: &cancellables)
subject.send("H")
subject.send("He")
subject.send("Hel")
subject.send("Hell")
subject.send("Hello")
// 결과
(1초 기다린 후) Hello
✋ 프로퍼티 for에는 SchedulerTimeType.Stride
타입의 값이 들어가요.
public init(_ timeInterval: DispatchTimeInterval)
public init(floatLiteral value: Double)
public init(integerLiteral value: Int)
public static func seconds(_ s: Double) -> DispatchQueue.SchedulerTimeType.Stride
public static func seconds(_ s: Int) -> DispatchQueue.SchedulerTimeType.Stride
public static func milliseconds(_ ms: Int) -> DispatchQueue.SchedulerTimeType.Stride
public static func microseconds(_ us: Int) -> DispatchQueue.SchedulerTimeType.Stride
public static func nanoseconds(_ ns: Int) -> DispatchQueue.SchedulerTimeType.Stride