Мне нужно убедиться, что дочерние элементы, добавленные в DatabaseReference, обрабатываются по порядку.Возможно, что ветвь, в которую добавляются дочерние элементы, получает несколько дочерних элементов, добавленных в нее один раз.Когда дети добавляются через небольшие промежутки времени, все работает нормально.
Для решения этой проблемы я уже внедрил решение на основе индекса.Я добавляю поле «индекс» в каждом дочернем элементе и гарантирую в облачных функциях (код, который добавляет эти дочерние элементы), что этот индекс является инкрементным для всех дочерних элементов.Затем я делаю следующее, чтобы реализовать его:
MyDatabaseReference.OrderByChild("index").ChildAdded += HandleTheChild;
В большинстве случаев это работает, но все еще бывают случаи, когда я получаю ошибки, подобные тем, с которыми сталкивались ошибки из-за неправильного упорядочения дочерних элементов.Моя гипотеза состоит в том, что функция HandleTheChild запускается всегда по порядку, но возможно, что дочерний элемент начинает обрабатываться до того, как предыдущий дочерний элемент полностью обработан функцией HandleTheChild.Это создает некоторые гоночные условия при их параллельном исполнении.Я хочу, чтобы каждый ребенок обрабатывался только после того, как все предыдущие дети были обработаны в порядке поступления.Моя гипотеза неверна?Если нет, мне следует продолжить реализацию решения проблемы «производитель-потребитель» на моем клиенте Unity?