У меня есть функция firebase, которая выглядит следующим образом:
exports.myFunction = functions.database.ref('/users/{id}/').onWrite((snapshot, context) => {
//do some processing here
//wait for 5 seconds
snapshot.after.ref.parent.once('value').then((newSnapshot) => {
//do some processing here
//check for some CONDITION
});
//do some processing here
return snapshot.after.ref.set(true); //return this if the CONDITION has been satisfied
return null; //return this if the CONDITION check fails
});
Я не могу найти подходящую реализацию для этой логики. У меня две проблемы.
Во-первых, я не уверен, как отложить выполнение, подождав 5 секунд. Я попытался реализовать метод setTimeout, но где-то я ошибаюсь.
Во-вторых, я не знаю, как программировать так, чтобы соответствующее возвращаемое значение передавалось в зависимости от проверки СОСТОЯНИЯ во внутренней функции.
Я впервые работаю над FireBase, и я относительно новичок в JS, поэтому любая помощь будет принята.
EDIT:
Вот пример того, что я делаю.
Допустим, есть два логических типа интернета и location_monitor. И то и другое изначально верно, что было установлено клиентом. Местоположение обрабатывается для получения некоторой информации. Клиент может установить оба значения в любое время.
Клиент теряет подключение к интернету. Переменная internet изменена на false. Клиент получает уведомление через локальную службу мониторинга о том, что интернет-соединение потеряно.
Период тайм-аута устанавливается для клиента, чтобы вернуться в онлайн (скажем, 5 секунд). Если клиент подключается к сети, мониторинг местоположения восстанавливается и обработка продолжается. Если клиент не подключается к сети, мониторинг местоположения прекращается. Когда клиент выходит в сеть через день или около того, мониторинг местоположения запускается как новый набор данных.