жду всех JDA RestActions - PullRequest
       21

жду всех JDA RestActions

0 голосов
/ 11 октября 2019

Я хочу создать (функциональную) систему тестирования для JDA Discord Bots.

Для этого мне нужно подождать, пока все сообщения в текущей очереди будут отправлены (сообщения отправляются с RestAction#queue) ипроверить, есть ли сообщение.

Есть ли способ ожидания всех очередей RestAction с, или я должен ждать экспоненциально (например, подождите 0,5 секунды, подождите 1 секунду, подождите 2 секунды и проверьте, существует ли сообщение)

[Примечание] Я не хочу менять queue на submit в своем рабочем коде и отправлять его на тест.

1 Ответ

0 голосов
/ 11 октября 2019

В идеале система тестирования вообще не должна взаимодействовать с Интернетом. Однако, чтобы ответить на ваш вопрос, вы можете подождать остальных, используя обещание, возвращенное submit вместо использования очереди.

List<CompletableFuture<?>> list = new ArrayList<>();

list.add(action1.submit());
list.add(action2.submit());
...

CompletableFuture<Void> merged = CompletableFuture.allOf(list.toArray(new CompletableFuture[0]));

merged.whenComplete((v, error) -> {
    if (error != null) error.printStackTrace();
    else System.out.println("All futures completed successfully");
});
...