У меня есть наблюдаемое, что я подписываюсь. Этот obsevable будет возвращать объект, у которого есть свойство ActivationType, которое может быть установлено несколько раз.Дроссель только в том случае, если встречается определенное условие
То, что я пытаюсь достичь, - это регистрировать сообщение всякий раз, когда для параметра ActivationType установлено значение «Type1». Однако, если для параметра ActivationType установлено значение «Тип2», запишите сообщение только один раз и подождите 30 секунд, прежде чем регистрировать снова, если ActivationType - «Тип2».
Так что, если у меня есть:
myObservable
.Where(o => o.ActivationType == "Type1" || o.ActivationType == "Type2") //listen for types 1 and 2
.Throttle() // ??? somehow only throttle if we are currently looking at Type2
.Subscribe(Log); //log some stuff
Я считаю, что дроссельная заслонка() является то, что я ищу, но я не знаю, как вызвать его условно.
Любые предложения?
Простой 'Throttle', вероятно, не то, что вы хотите -' Throttle' очень похож на «Window», поскольку он будет запускаться один раз в конце каждого периода (в вашем случае 30 секунд), поэтому любой " Type2 "будут задерживаться до конца каждого окна. – JerKimball
@JerKimball: Я вижу. Я еще новичок в Rx. Что мне следует использовать, если я просто хочу запускать первый раз без каких-либо задержек, а затем игнорировать следующие события Type2 до 30 секунд. (после этого просто запускается еще раз, если необходимо)? – Flack