2010-11-22 3 views
1

Ich habe eine Observable, dass wenn eine Nachricht ausgelöst wird angezeigt wird. Nach einer Verzögerung möchte ich diese Nachricht ausblenden, außer in der Zwischenzeit hat dieses Observable wieder gefeuert. Mit anderen Worten, wenn man eine Observable gibt, möchte ich eine andere Observable erstellen, so dass, wenn das letzte Ereignis ausgelöst wird, das erste Observable mehr als eine bestimmte Zeit vor den erzeugten beobachtbaren Bränden liegt, die das letzte Event sind.Puffer/Ignoriere Ereignisse bis zur Inaktivitätszeit, dann feuere nur das letzte Ereignis

Antwort

0

die beobachtbare o gegeben, der folgende Code tut, was ich will:

var d = o 
    .DistinctUntilChanged() 
    .Timestamp() 
    .Select(function(e) { return e.Timestamp; }) 
    .Publish(); 
d.CombineLatest(d.Delay(2000), function(a, b) { return a === b; }) 
    .Where(function(o) { return o; }) 
    .Subscribe(function(v) { /* ... do something with v ... */ }); 
d.Connect(); 

Dies erzeugt eine beobachtbare d, die nach 2000 ms Inaktivität von o ausgelöst.

HINWEIS: Der Wert der v in der Abonnementfunktion ist immer true.

Verwandte Themen