Гарантирует ли Tasks.whenAllSuccess порядок, в котором я передаю ему задания? - PullRequest
0 голосов
/ 01 мая 2018

Я использую Cloud Firestore в приложении для Android.

Я создаю 2 запроса, один whereLessThan и один whereGreaterThan, чтобы эффективно создать запрос !=. Я заказываю результаты для каждого отдельного запроса, но когда я запускаю их по отдельности, я могу сначала получить один или другой результат, в зависимости от того, что быстрее.

Когда я объединю 2 запроса в 1, а затем использую метод Tasks.whenAllSuccess, чтобы получить 1 Task и добавить к нему 1 OnSuccessListener, будет ли он поддерживать порядок результатов, в котором я передаю свои задачи?

public void loadNotes(View v) {
    Task task1 = notebookRef
            .whereLessThan("priority", 2)
            .orderBy("priority")
            .get();

    Task task2 = notebookRef
            .whereGreaterThan("priority", 2)
            .orderBy("priority")
            .get();

    Task finalTask = Tasks.whenAllSuccess(task1, task2).addOnSuccessListener(new OnSuccessListener<List<Object>>() {
        @Override
        public void onSuccess(List<Object> objects) {
            //will my results be ordered prioty 1 - 3 - 4 - 5....?
        }
    });
}

1 Ответ

0 голосов
/ 02 мая 2018

Tasks.whenAllSuccess (и другие методы whenAll) будут доставлять результаты задач в функцию обратного вызова в списке в том порядке, в котором они были переданы whenAllSuccess. Если вам нужен какой-то другой способ получения результатов, вы можете поддерживать некоторую структуру данных с помощью исходных объектов Task, а затем запрашивать их по своему усмотрению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...