Я ищу способ, которым оператор throttle()
отказывается от первого элемента в Observable
в течение заданного интервала времени, а не от последнего элемента.
Аналогичный вопрос был задан (и дан ответ) в RxSwift - Debounce/Throttle inverse, но там является несовершенством тех ответов, которых я хотел бы избежать. То есть в идеальном сценарии получается первый элемент, испускаемый в Observable
, а любые будущие игнорируются в течение временного интервала. Однако при работе с window()
или timer()
возможно, что два элемента будут выполняться внутри заданного временного интервала, потому что таймер не работал параллельно началу вызова throttle()
. Пример:
|..........|..........|..........|
^ ^
first second
Они попадают в разные окна и поэтому оба принимаются несовершенным решением, описанным в связанном ответе.
В идеале должен быть способ перезапустить таймер, как только появится первый элемент в окне, чтобы приведенный выше пример вместо этого выглядел примерно так:
|..........|.......|..........|
^ ^
first second (ignored)
Любые идеи?
Редактировать: чтобы быть ясным, я не уверен, как с этим справляется разновидность дросселя () RxSwift 3.0-beta1, но я ищу решение для реализаций RxSwift 2.x.