Pull to refresh
5
0
Send message

ИМХО, fromEmitter для более простых случаев. AsynOnSubscribe упрощает написание собственного источника, поддерживающего Backpressure и умеющего выдавать запрашиваемое количество элементов.

Да, увидел о чём вы. Мне кажется это единичный случай, потому что я не могу это воспроизвести.

В принципе можно, поменяв как работает observeChanges. У нас ещё есть синхронное получение значения, поэтому сделали так по привычке (хотя сейчас посмотрел, что BehaviorSubject имеет метод getValue).

Согласен, fromEmitter выглядит проще и надёжнее.
Сам его до этого не использовал, потому что в тех редких местах где использовал Observable.create проблем с backpressure не было. А в других использовал Observable.SyncOnSubscribe и Observable.AsyncOnSubscribe.

Гифка кратко, но показывает как это выглядит.
В таком случае, я советую вам сначала посмотреть Андроид приложение, потому что карта там отличается от десктопной. И пины там ведут себя как я описал выше.
Вы пишете про разные вещи, цитата относится к запросу, который ещё не успел выполниться на момент, когда подвинули карту и начали запрашивать точки из новой области.

Далее, чтобы избежать моргания пинов на карте, берётся пересечение множества уже загруженных точек с теми, которые только что получили. Таким образом, пины, которые вышли из области видимости, удаляются, которые появились — добавляются на карту.

А идея с загрузкой дельты вводит дополнительную сложность, поскольку надо считать эту дельту, объединять её результаты с текущими, это что касается клиента. С точки зрения сервера, не факт, что поиск в дельте будет быстрее, чем во всей области + с кластеризацией сложнее.
Стандартные Loaders проигрывают тем, что у них нет такого большого количества операторов/фич, как у RxJava :-)

Information

Rating
Does not participate
Works in
Registered
Activity