मान लें कि मेरे पास एक त्वरित संदेश एप्लिकेशन है जो हर बार एक संदेश आने पर बीप ध्वनि बजाता है। मैं debounce
बीप करना चाहता हूं, लेकिन मैं पहले संदेश के लिए बीप ध्वनि खेलना चाहता हूं, न कि निम्न के लिए (एक समय में, कहें, 2 सेकंड में)।RxSwift - Debounce/Throttle "उलटा"
एक और उदाहरण हो सकता है: मेरा ऐप टाइपिंग नोटिफिकेशन भेजता है (इसलिए जिस उपयोगकर्ता के साथ मैं चैट कर रहा हूं वह देख सकता है कि मैं एक संदेश टाइप कर रहा हूं)। जब मैं टाइपिंग शुरू करता हूं, तो मैं एक टाइपिंग अधिसूचना भेजना चाहता हूं, लेकिन केवल एक्स-सेकेंड अंतराल में नए भेजता हूं, इसलिए मैं टाइप किए गए प्रत्येक चरित्र के लिए टाइपिंग अधिसूचना नहीं भेजता हूं।
क्या यह समझ में आता है? क्या इसके लिए कोई ऑपरेटर है? क्या मौजूदा ऑपरेटरों के साथ इसे हासिल किया जा सकता है?
यह पहला उदाहरण है। मैं अब debounce
के साथ इसे हल कर रहा हूं, लेकिन यह आदर्श नहीं है। अगर मुझे 1 सेकंड के अंतराल में 1000 संदेश प्राप्त होते हैं, तो यह अंतिम संदेश आने तक ध्वनि नहीं चलाएगा (मैं पहली बार ध्वनि बजाना चाहता हूं)।
self.messagesHandler.messages
.asObservable()
.skip(1)
.debounce(2, scheduler: MainScheduler.instance)
.subscribeNext { [weak self] message in
self?.playMessageArrivedSound()
}.addDisposableTo(self.disposeBag)
धन्यवाद!
है यह एक अच्छा स्पष्टीकरण https://medium.com/@dkhuong291/throttle-vs-debounce-in-rxswift-86f8b303d5d4 – onmyway133