Re[4]: Reactive Extensions
От: okon  
Дата: 24.11.19 16:53
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, okon, Вы писали:


O>>Очень простая задача встречающаяся практически в любом интерфейсе — нужно отобразить список Items[] GetList(string filter) который формируется долго, задержка плавающая т.е. может от 0.1 секунды ответ прийти до 5 секунд, пользователь вводит данные в поле filter, запрос сразу отправлять не требуется, только после 500 миллисекунд после того как пользователь перестал вводить данные. Нужно отображать актуальный список в UI соотвествующий последнему введеному filter.


S>, 5000));

S> return await Task.FromResult(new List<string>()
S> {
S> q + "пункт 1 ",
S> q + "пункт 2",
S> q + "пункт 3",
S> }


Только стандартный баг ты сделал в таком решении, то что если предыдущий запрос будет дольше чем новый то старый запрос перетрет данные и они будут не релевантны фильтру
Поиграйся с этим решением, заметишь баг.

O>>Потом немного усложним условие — есть еще Checkbox который также отвечает за алгоритм фильтрации ( например Ignore Case в фильтре ).


S>И чем это усложнит?


Да тут нужнл еще условие что с чек боксом должен другой метод "сервиса" вызываться.
Попробуй.


Потом посмотри как просто и элегантно подобная задача решается в парадигме RX.
Она обычно есть в разных примерах.одна строка.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.