Использовать оператор sampleTime без префикса задержки? - PullRequest
0 голосов
/ 15 февраля 2019

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

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

Дляпример;

observable.pipe(sampleTime(250)).subscribe(value => console.log(value));

// outputs (periods are delays)
...10...11...12......................14...15...16

Это прекрасно работает при регулировании обновлений пользовательского интерфейса на более медленные интервалы обновлений.

Я столкнулся с проблемой, что sampleTime(250) будет префикс всех передаваемых значений сзадержка 250 мс.Таким образом, в приведенном выше примере значение 14 не выдается до 250 мс позже.Проблема в том, что перед значением 14. была длительная задержка .

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

Например;

// currently 
...10...11...12......................14...15...16
^^^ remove these dots             ^^^ remove these dots

// what I really want
10...11...12...................14...15...16

Не могу придумать лучшего способа объяснить это.

1 Ответ

0 голосов
/ 15 февраля 2019

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

Как вы видите, у throttleTime нет отступа в начале

sampleTime: Sample time timeline throttleTime: Throttle time timeline

...