Re[9]: [Rx] Задержать событие при условии
От: TK Лес кывт.рф
Дата: 04.12.16 12:02
Оценка:
Здравствуйте, _NN_, Вы писали:


TK>>Это все источник событий тормозить не будет и все сильно будет зависить от того, как обрабатывать результат. можно написать someObservable.Select(x => getY(x)).Concat(), можно someObservable.Select(x => getY(x)).Merge() — с разными последствиями на результат. Вам какие именно нужны?

_NN>Мне главное, чтобы был порядок.
_NN>Т.е. если приходит событие пока я жду пусть подождёт в сторонке и обработается когда придёт его очередь.
_NN>При этом хотелось бы дать другим подписчикам работать дальше пока я жду.

Не понятно...

1. Порядок даст Concat() но, пока идет ожидание будет копиться очередь из не обработанных событий (ну и с TimeOut будут заморочки). Merge() такую очередь копить не будет но, порядок следования событий будет "сбит".
2. Подписчик это кто? Он ваш или это подписчик на someObservable? Если someObservable то, они блокироваться не будут. Если ваш то см. пункт 1

someObservable
  .Select(x => getY(x))
  .Merge()|Concat()|MergeAndSort()
  .Where(y => y.IsValid)
  .Scan(new { Current=abc, Prev=null }, (prev, cur) => new { Current=cur, Prev=prev.Current })
  .Select(makeResult)
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Отредактировано 04.12.2016 12:05 TK . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.