Giả sử tôi có ứng dụng nhắn tin tức thì phát âm thanh tiếng bíp mỗi khi có tin nhắn đến. Tôi muốn debounce
tiếng bíp, nhưng tôi muốn phát âm thanh tiếng bíp cho tin nhắn đầu tiên đến và không phải cho những âm thanh sau (trong khoảng thời gian là 2 giây).RxSwift - Debounce/Throttle "nghịch đảo"
Ví dụ khác có thể là: ứng dụng của tôi gửi thông báo nhập (vì vậy người dùng tôi đang trò chuyện có thể thấy rằng tôi đang nhập tin nhắn). Tôi muốn gửi thông báo nhập khi tôi bắt đầu nhập nhưng chỉ gửi thông báo mới trong khoảng thời gian X giây, vì vậy tôi không gửi thông báo nhập cho mỗi ký tự tôi nhập.
Điều này có hợp lý không? Có một nhà điều hành cho điều đó? Nó có thể đạt được với các nhà khai thác hiện tại?
Đây là mã của tôi cho ví dụ đầu tiên. Tôi đang giải quyết nó ngay bây giờ với debounce
, nhưng nó không phải là lý tưởng. Nếu tôi nhận được 1000 tin nhắn trong khoảng thời gian 1 giây, nó sẽ không phát âm thanh cho đến khi tin nhắn cuối cùng đến (tôi muốn phát âm thanh trên tin nhắn đầu tiên).
self.messagesHandler.messages
.asObservable()
.skip(1)
.debounce(2, scheduler: MainScheduler.instance)
.subscribeNext { [weak self] message in
self?.playMessageArrivedSound()
}.addDisposableTo(self.disposeBag)
Cảm ơn!
Đây là một lời giải thích tốt https://medium.com/@dkhuong291/throttle-vs-debounce-in-rxswift-86f8b303d5d4 – onmyway133