Некоторые наблюдаемые просто так нуждаются . Они хотят, чтобы вы слушали, слушали и слушали все, что они могут сказать, может быть, на все времена! Что если я действительно смогу обработать события всего за несколько секунд? Могу ли я написать что-то вроде
mouseMoves.TakeFor(TimeSpan.FromSeconds(2))
Концептуально, это создаст субъект, который будет передавать события до истечения определенного времени, затем отписываться от основной наблюдаемой и отмечать свою собственную последовательность завершенной. Я подозреваю, что вы могли бы написать это таким образом вручную, но, похоже, должны существовать некоторые существующие операторы, которые делают это. Я надеялся, что Observable.TimeOut
сделает то, что я хочу, например используя
mouseMoves.Timeout(TimeSpan.FromSeconds(2), Observable.Empty<T>())
Но я думаю, что он делает тайм-аут наблюдаемого, если промежуток времени между наблюдениями больше заданного значения. Это тоже полезно, но не совсем то, что мне нужно.