Буфер / Игнорировать события до периода бездействия, затем запускать только последнее событие - PullRequest
1 голос
/ 22 ноября 2010

У меня есть заметное, что при его срабатывании отображается сообщение. После некоторой задержки я хочу затемнить это сообщение, если за это время наблюдаемое снова не сработало.

Другими словами, с учетом наблюдаемой, я хочу создать другую наблюдаемую, такую, чтобы при возникновении последнего события первая наблюдаемая была больше, чем указанное время назад, созданная наблюдаемая запускает это последнее событие.

1 Ответ

0 голосов
/ 22 ноября 2010

Учитывая наблюдаемый o, следующий код делает то, что я хочу:

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();

Это создает наблюдаемое d, которое сработает после 2000 мс бездействия с o.

ПРИМЕЧАНИЕ : значение v в функции подписки всегда равно true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...