База данных Firebase Realtime: происходит ли событие 'value' автоматически - PullRequest
0 голосов
/ 02 июня 2019

Как я понимаю, когда следующая строка кода интерпретируется / выполняется Javascript

ref.on('value',callback)

(аналогично document.addEventListener('click', callback)).Обратный вызов прикрепляется к объекту el / для этого события, так что, когда это событие выполняется, запускается присоединенный обратный вызов (обработчик события).

Но я наблюдаю, что событие 'value' в firebase автоматически срабатывает, когда естьнекоторые данные в этом ref, когда вышеупомянутая строка кода интерпретируется / выполняется Javascript, даже если нет НИКАКОГО триггера, такого как операция добавления / удаления / изменения, которая происходит с этой ссылкой.

Является ли эта интерпретация /предположение верное или событие value работает так же, как и любое другое событие, которое инициируется операциями добавления / удаления / изменения.В этом случае что бы это был за триггер ?

Также , если событие value запускается автоматически, оно фактически выполняет асинхронный / сетевой вызов базы данных firebaseна этой ссылке и затем извлекает эти данные (снимок) или - это данные ref , кэшированные на стороне клиента, то есть нет асинхронного / сетевого запроса.

Может кто-нибудь, дружище, прояснить как эту путаницу?Ваша помощь приветствуется.

1 Ответ

2 голосов
/ 02 июня 2019

Согласно документации :

Вы можете использовать событие value, чтобы прочитать статический снимок содержимого по заданному пути, поскольку они существовали во времясобытие. Этот метод запускается один раз, когда прослушиватель подключен, и снова каждый раз, когда изменяются данные, включая дочерние. Обратному вызову события передается моментальный снимок, содержащий все данные в этом месте, включая дочерние данные.Если данных нет, моментальный снимок вернет false, когда вы вызываете функцию there (), и null, когда вы вызываете val () для него.

Когда вы присоединяете прослушиватель, SDK будет использовать свое постоянное соединениев базу данных, чтобы проверить, есть ли новые данные.Если новых данных нет, то предоставляются локально кэшированные данные.

...