2016-12-14 8 views
5

मैं अपने angular2 आवेदन में प्रदर्शन समस्या आ रही है, क्योंकि मैं एक बड़ा Observable.combineLatest() कई आदानों जो जल्दी बदलने के साथ है और मैं कॉलबैक कॉल Debounce हैं: इस तथ्य के बादकोणीय 2: Observable.combineLatest कॉल को कैसे रद्द करें?

myData$ = Observable.combineLatest(
    this.store.let(fromRoot.getFoo), 
    this.store.let(fromRoot.getBar), 
    this.store.let(fromRoot.getFoobar), 
    this.store.let(fromRoot.getBarfoo), 
    (foo, bar, foobar, barfoo) => { 
    ... 
    }); 

कॉलिंग debounce, जैसे Observable.combineLatest (...)। DebounceTime (300), बेकार है क्योंकि सीपीयू गहन कार्य गठबंधन के अंदर हो रहा है सबसे कम कॉलबैक जिसे अभी भी अक्सर कहा जाता है।

मुझे लगता है कि मुझे एक और पर्यवेक्षक गठबंधन करना है, लेकिन मुझे यकीन नहीं है कि यह कैसे करना है, कोई विचार?

+0

'store.let' क्या करता है? ऐसा लगता है कि यह शायद एक टाइमर पर दिए गए फ़ंक्शन को कॉल कर रहा हो? –

+0

यह मुझे एक ngrx स्टोर से एक देखने योग्य देता है, https://github.com/ngrx/store – arturh

उत्तर

7

combineLatest विधि के project समारोह अनिवार्य रूप से एक map ऑपरेटर है। आप इस तरह की चीजों को फिर से व्यवस्थित कर सकते हैं:

myData$ = Observable.combineLatest(
    this.store.let(fromRoot.getFoo), 
    this.store.let(fromRoot.getBar), 
    this.store.let(fromRoot.getFoobar), 
    this.store.let(fromRoot.getBarfoo) 
) 
.debounceTime(300) 
.map(([foo, bar, foobar, barfoo]) => { 
    ... 
}); 
संबंधित मुद्दे