2017-04-11 8 views
5

क्या देरी के साथ अनुक्रम चलाने के लिए संभव है, यदि कोई अन्य घटनाएं नहीं आ रही हैं, और सभी मान एक बार में वापस आती हैं?आरएक्सजेएस: debounceTime सभी मानों को वापस

मुझे किसी प्रकार की debounceTime func की आवश्यकता है, लेकिन यह सभी मान वापस कर देगा।

उत्तर

4

यदि मैं सही ढंग से समझता हूं, तो आपको एक ऑपरेटर की आवश्यकता होती है जो घटनाओं को बफर करता है जब तक कि किसी निश्चित अवधि के लिए कोई घटना न हो, फिर सभी बफर्ड घटनाओं को दोहराता है।

सेट प्रत्यक्ष प्रोटोटाइप के लिए इस नए ऑपरेटर:: फिर

function bufferedDebounceTime(time) { 
    return Observable.create(subscriber => { 
     let buffer = []; 
     return this.do(x => buffer.push(x)) 
      .debounceTime(time) 
      .flatMap(() => buffer) 
      .do(() => buffer = []) 
      .subscribe(
       value => subscriber.next(value), 
       err => subscriber.error(err), 
       () => subscriber.complete() 
      ); 
    }); 
} 

Observable.prototype.bufferedDebounceTime = bufferedDebounceTime; 

एक ऑपरेटर के रूप में उपयोग: मैं इस कोशिश करेगा

yourSourceObservable.bufferedDebounceTime(1000).subscribe(...) 
संबंधित मुद्दे