2017-06-23 4 views
1
let button = document.querySelector('.mbtn'); 
let lab = document.querySelector('.mlab'); 

let clickStream = Observable.fromEvent(button,'click'); 

let doubleClickStream = clickStream 
     .buffer(()=> clickStream.throttle(250)) 
     .map(arr => arr.length) 
     .filter(len => len === 2); 

doubleClickStream.subscribe(event =>{ 
     lab.textContent = 'double click'; 
}); 

    doubleClickStream.throttle(1000) 
     .subscribe(suggestion =>{ 
      lab.textContent = '-'; 
     }); 

Doppelklick zu lösen, aber das ist Fehler in meinem angular2 Projekt, die mich um es zu lösen helfen kann, dieser FehlerHow to use 'Rx beobachtbar' in angular2

↓ Log

ERROR in /Users/genilex3/Desktop/meager/angularRxjs/angularrxjs/src/app/app.component.ts (58,15): Argument des Typs '() => any' ist nicht dem Parameter vom Typ 'Observable zuweisbar ". Die Eigenschaft '_isScalar' fehlt im Typ '() => any'.

ERROR in /Users/genilex3/Desktop/meager/angularRxjs/angularrxjs/src/app/app.component.ts (58,41): Argument vom Typ 'Zahl' ist nicht zuordenbar Parameter Typ '(Wert: {}) => SubscribbleOrPromise'.

+0

.buffer (() => clickStream.throttle (250)) sollte .buffer sein (clickStream.throttle (250)) – ZahiC

+0

lassen doubleClickStream = Click-Stream \t \t .buffer (clickStream.throttle (250)) \t \t .Map (arr => arr.length) \t \t .filter (LEN => len === 2); FEHLER in /Users/genilex3/Desktop/meager/angularRxjs/angularrxjs/src/app/app.component.ts (58,36): Argument des Typs 'Nummer' kann nicht dem Parameter vom Typ 'zugewiesen werden (Wert: {}) => SubscribbleOrPromise '. FEHLER in /Users/genilex3/Desktop/meager/angularRxjs/angularrxjs/src/app/app.component.ts (66,33): Argument des Typs 'Nummer' kann nicht dem Parameter vom Typ 'zugewiesen werden (Wert: Zahl) => SubscribbleOrPromise '. – Holmes

+0

versuchen, diese .buffer (clickStream.throttleTime (250)) – ZahiC

Antwort

2

Sie sollten bufferTime für Ihren Stream verwenden.

let doubleClickStream = clickStream 
     .bufferTime(250) 
     .map(arr => arr.length) 
     .filter(len => len === 2); 

Hier können Sie mehr lesen: http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-bufferTime

Wenn Sie Ihren Wert nach 1000 ms löschen, nachdem er eingestellt wurde, sollten Sie debounceTime Methode verwenden.

doubleClickStream.debounceTime(1000) 
    .subscribe(suggestion =>{ 
     lab.textContent = '-'; 
    }); 

Hier können Sie mehr über debounceTime lesen: http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-debounceTime

+0

danke für Sie ...... – Holmes

+0

Wenn es funktioniert, sollten Sie diese Antwort akzeptieren, indem Sie auf der linken Seite [email protected] Holmes – Zen

+0

natürlich .......... – Holmes