В этой главе мы сосредоточимся на расширенном использовании в будущем. Здесь мы перечислим некоторые реальные проблемы проекта и рассмотрим, как решить эту проблему с помощью инструмента Utility X в нулевой системе.
Мы часто сталкиваемся с такими ситуациями:
В этой ситуации у нас есть две таблицы: Video & Subscription, и мы хотим получить список видео, но каждая запись должна выполнять вторичный запрос, чтобы проверить, было ли подписано это видео. Вот фьючерс для такой ситуации:
Этот пример приведён потому, что в проекте мы использовали Mongo вместо SQL, нет оператора соединения, и нам нужно упомянуть, что API — не лучшее решение, а только представить использование API, чтобы рассказать вам, как построить фьючерс в нулевом состоянии.
static <F, S, T> Future<List<T>> thenParallel(
final Future<List<F>> source,
final Function<F, Future<S>> generateFun,
final BiFunction<F, S, T> mergeFun
)
Рабочий процесс для этого API следующий:
Future<List<F>>
, в нашей ситуации F означает Video.Future<S>
, функция принимает аргумент из шага 1, затем эта функция будет воздействовать на каждый элемент List<F>.Future<S>
и получит S
, последний mergeFun
позволит вам обработать F, S
в T
и вернуть Future<List<T>>
.Рабочий процесс этого API выглядит следующим образом:
Этот API немного сложен, поскольку он обеспечивает параллельную работу со списком и генерирует новый список. В вышеприведённом рабочем процессе F — это видео, мы могли бы использовать видео для создания каждой записи о подписке, принадлежащей вам, тогда каждый элемент будет выполнен для построения результата T
. Последний результат List<T>
содержит список видео с дополнительным полем «подписан», которое сообщает вам, подписаны ли вы на видео.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )