Я бы хотел прочитать несколько узлов Firebase перед выполнением некоторых действий с извлеченными данными. В настоящее время я выполнил это, вложив каждый запрос в прослушиватель завершения предыдущего запроса, но вложенность делает код сложным для поддержания. Есть ли способ выполнить несколько запросов подряд или одновременно и слушать, когда все они завершены?Как проверить завершение чтения с нескольких узлов в базе данных реального времени Firebase?
ответ
Пример, если у вас есть два запроса, и вы хотите, чтобы запустить код после того, как они завершили и/или успеха:
Boolean ref1done = false;
Boolean ref2done = false;
// if you need data from snapshot
DataSnapshot result1;
DataSnapshot result2;
ref1done = false;
dataRef1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ref1done = true;
result1 = dataSnapshot;
doThisAfter();
}
...
});
ref2done = false;
dataRef2.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ref2done = true;
result2 = dataSnapshot;
doThisAfter();
}
...
});
...
public function doThisAfter() {
if (ref1done && ref2done) {
// do something
// if you need data from snapshot, it can be accessed from result1 and result2
}
}
Это может быть не лучшим решением, я также по-прежнему искать, если есть является лучшим. Или, может быть, вы можете попробовать использовать EventBus.
Ну, это один из способов сделать это и довольно просто, хотя мне интересно, будет ли снижение производительности для 4 выполненных запросов как это. Я думал создать ArrayList из ValueEventListeners, передать их объекту, который будет запускать их один за другим, использовать пользовательский прослушиватель событий, который будет запускать после завершения одного ValueEventListener для обработки второго и когда все будут обработаны, начнется полное событие завершения и return ArrayList of datasnapshots :) – wilkas
Я буду отвечать на завтра, если не будут предоставлены лучшие решения. – wilkas
В настоящее время я использую запрос 5-6 одновременно с началом приложения. Я не заметил существенной разницы, чем когда я вызываю только один запрос. Но я все еще учусь. Возможно, вы захотите увидеть [эту страницу, которую я только что нашел] (http://stackoverflow.com/questions/35931526/) – koceeng
- 1. Firebase приемник данных реального времени
- 2. Как обрабатывать автономные транзакции в базе данных реального времени Firebase?
- 3. Иммунизация старения в базе данных реального времени Firebase
- 4. Как изменить порядок данных из базы данных реального времени firebase
- 5. База данных реального времени Firebase и Auth
- 6. База данных реального времени Firebase addValueEventListener
- 7. База данных Firebase реального времени не отображается
- 8. Firebase База данных реального времени не работает
- 9. В режиме реального времени Push-уведомления с Firebase
- 10. Firebase для MMO в режиме реального времени
- 11. Firebase извлекает дочернее значение из базы данных реального времени Firebase
- 12. Извлечение данных из базы данных реального времени firebase IOS Swift
- 13. База данных реального времени Firebase: запись новых данных не выполняется
- 14. Firebase: Извлечение нескольких узлов
- 15. Firebase для не-реального времени
- 16. Как обновить базу данных firebase в режиме реального времени?
- 17. Как хранить сообщения в режиме реального времени в базе данных?
- 18. Как использовать секрет приложения с протоколом REST для доступа к базе данных реального времени firebase
- 19. Вопросы Сохранение объектов в Firebase База данных реального времени
- 20. База данных реального времени Firebase добавить в список в MutableData
- 21. Как хранить данные в базе данных реального времени в firebase при регистрации пользователя?
- 22. Как зарегистрировать и хранить информацию о пользователе в базе данных реального времени Firebase
- 23. Как получить данные в базе данных реального времени FIREBASE на основе Latlng
- 24. Как удалить из базы данных реального времени firebase?
- 25. Firebase: извлекать данные из базы данных реального времени как Int
- 26. Комбинирование слушателя данных реального времени Firebase с RxJava
- 27. База данных реального времени Firebase Непостоянное поведение в автономном режиме
- 28. Как восстановить дочерний элемент базы данных реального времени для Firebase
- 29. Шифрование данных между клиентами и базой данных реального времени Firebase
- 30. Предоставьте доступ к частям базы данных реального времени firebase в соответствии с uid
Решение общего назначения представлено здесь: http://stackoverflow.com/a/38188683/4815718 –