Daily iOS
동시성

검색 디바운스 구현

검색창에 글자를 입력할 때마다 API를 호출하면 요청이 폭주합니다. 마지막 입력 후 300ms 동안 추가 입력이 없을 때만 호출되도록 디바운스를 GCD로 직접 구현해 보세요.

면접관은 이 답을 어떻게 들을까요? 넘어갈지, 더 물어볼지, 떨어뜨릴지 알려 주고, 걸리는 문장은 콕 집어 줘요. 점수는 그대로예요.
짧은 답 보기

DispatchWorkItem을 프로퍼티에 보관하고 입력마다 이전 아이템을 cancel()한 뒤 새 아이템을 asyncAfter로 예약한다. cancel은 아직 시작 안 한 아이템만 막는다. Swift Concurrency는 Task.sleep(300ms) 후 실행하는 Task를 보관하고 취소한다.

받은 질문 공유