У меня есть прокси, который вызывает несколько REST API для создания конечного результата для интерфейса. Пользовательский интерфейс построен с помощью KnockoutJS. Я использую методы task/async для асинхронного вызова API. Только 1 или 2 API возвращают список, все остальные возвращают объекты с плоскими значениями. Может ли Rx использоваться для объединения результатов тех API, которые не возвращают коллекцию? Поскольку вывод не является коллекцией, это означает, что он не является потоком событий, поэтому объединение таких вызовов api с Rx должно противоречить рекомендациям Rx?Являются ли реактивные расширения подходящими только для вызовов API, которые возвращают сбор?
ответ
Поскольку выход не является коллекцией, это означает, что это не поток событий, поэтому объединение таких вызовов api с Rx связано с рекомендациями Rx?
См. Вызов API как поток только одного события. Это событие может быть List
, или просто Object
.
Может ли Rx использоваться для объединения результатов тех API, которые не возвращают коллекцию?
Да! Reactive Extentions - это API для асинхронных вызовов. Не имеет значения, возвращает ли ваш API коллекцию, объект или ничего.
пример:
interface YourRemoteApi {
Observable<List<String>> users();
Observable<User> userData(String id);
Observable<Void> deleteUser(String id);
}
class Main {
public static void main(String...args) {
YourRemoteApi api = ...
api.users()
// transform an Observable<List<String>> to Observable<String>
.flatMapIterable(ids -> ids)
// call in a async fashion api.userData()
.contatMap(id -> api.userData(id))
.filter(data -> data.toDelete())
// call in a async fashion api.deleteUser
.flatMap(data -> api.deleteUser(data.id))
.subscribe();
}
}
PS: В этом примере используется RxJava. Он может отличаться в другом языковом порту (например, Reactive Extensions for .NET и т. Д.)
Просто потому, что вы можете это не значит, что вам нужно. В Java у вас невероятно ограниченная выразительность и отсутствие синтаксической поддержки асинхронного программирования. В C#, VB и практически на любом другом языке у вас есть гораздо более сложные варианты. Java ужасен - не вижу в мире этого. –
- 1. Являются ли шаблоны адаптера и посетителя подходящими для использования?
- 2. Являются ли карты Google api подходящими для негеографических видов?
- 3. Реактивные расширения для Java
- 4. Являются ли интернированные константы подходящими для GC?
- 5. Являются ли файлы resx подходящими для интернационализации?
- 6. Являются ли несколько классов DataContext подходящими?
- 7. Могу ли я использовать реактивные расширения для очередей вызовов службы Windows?
- 8. вид Update - Реактивные расширения
- 9. Реактивные расширения использования памяти
- 10. Являются ли Rails-двигатели подходящими для управления несколькими версиями приложения?
- 11. Как использовать реактивные расширения для шины событий
- 12. побочные эффекты, которые создают ресурсы в rx (реактивные расширения)
- 13. Являются ли векторы Word2Vec и перчаток подходящими для распознавания сущностей?
- 14. Являются ли объекты PHP Closure подходящими для сбора мусора
- 15. Реактивные расширения ControlScheduler
- 16. Реактивные расширения: проблема с Where()
- 17. Реактивные расширения: разрешено использовать только один абонент для каждого типа
- 18. Реактивные расширения в Winforms
- 19. Реактивные расширения (Rx) + MVVM =?
- 20. Реактивные расширения: параллелизм в подписчике
- 21. Реактивные расширения Образец или дроссель?
- 22. сопроцессорные/реактивные расширения - строки записи
- 23. Являются ли RDF тройными магазинами, подходящими для повседневного программирования?
- 24. Являются ли рейк-задачи подходящими для длительных процессов производства?
- 25. Являются ли эти показания подходящими для приложения с ~ 500 CCU?
- 26. Являются ли эти данные подходящими для хранения в базе данных?
- 27. Являются ли функциональные языки программирования подходящими для графического программирования?
- 28. Являются ли данные динамической отчетности подходящими для моих нужд?
- 29. Реактивные расширения для обработки непрерывных потоков сообщений
- 30. Являются ли названия или символы API отражения scala подходящими для использования внутри объектов переноса?
Можете ли вы поделиться некоторым кодом? –
В обоих случаях вы возвращаете одно значение (в смысле Rx мира). Этот единственный элемент может быть скалярным значением или коллекцией, но он по-прежнему является всего лишь одним ответом HTTP (что делает предположение, что когда вы говорите, что REST означает HTTP). Если бы вы ответили потоком сообщений из WebSocket или фида Atom, то да в терминах Rx вы имели бы последовательность событий с мощностью более 1. В любом случае Rx будет радостно заниматься последовательностями 0, 1 или многих. –