RxSwift: получать события немедленно, если последнее событие не было обработано в течение определенного интервала.

Впервые в RxSwift / Reactivex. В основном то, что я пытаюсь сделать, - это вызывать сервер всякий раз, когда что-то происходит, но следить за тем, чтобы это происходило не чаще, чем каждые 10 секунд. Если возможно, реже.

Например, всякий раз, когда генерируется событие («требуется обновление»), я хотел бы немедленно вызвать сервер, если с момента моего последнего вызова прошло более 10 секунд. Если прошло меньше времени, я хотел бы позвонить через 10 секунд после последнего. Неважно, сколько событий было сгенерировано за эти 10 секунд.

Я просмотрел описание throttle, но, похоже, он умирает от голода, если события происходят очень быстро, что нежелательно.

Как я могу этого добиться?


person Andreas    schedule 24.05.2016    source источник
comment
Не могли бы вы пояснить, что вы имеете в виду под голодом?   -  person solidcell    schedule 24.05.2016
comment
Это означает, что события не будут доставлены, если они будут происходить достаточно часто.   -  person Andreas    schedule 24.05.2016
comment
Где вы видите это описание? Я не видел этого в документации и не испытывал этого на себе. Не могли бы вы поставить ссылку на него и вставить соответствующий текст?   -  person solidcell    schedule 24.05.2016
comment
Ах, теперь я понимаю, о чем вы говорили, голодая. Я добавил ответ. Ответ может быть полезен в будущем, но я посмотрю, смогу ли я придумать что-нибудь, что поможет вам сейчас, когда у меня будет минутка.   -  person solidcell    schedule 24.05.2016
comment
Привет спасибо за ответ! Я решил пока решить эту проблему без Rx, но мне все равно было бы интересно, как это сделать с помощью Rx (желательно разборчиво). NSTimer не очень красив.   -  person Andreas    schedule 25.05.2016


Ответы (1)


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

https://github.com/RxSwiftCommunity/RxSwiftExt/issues/10

person solidcell    schedule 24.05.2016
comment
Я проверю это! - person Andreas; 25.05.2016