Использование промисов в Geofire

В документации Geofire говорится, что Geofire возвращает обещания при чтении и записи данных, но я не могу найти никаких примеров этого. Мне было интересно, как я могу использовать это в javascript, чтобы прикрепить функцию к концу слушателя, который срабатывает, когда обещание geofire выполняется. Мой код:

var onKeyEnteredRegistration = this.geoQuery.on("key_entered", function(key, location, distance) {
    console.log(key + " entered query at " + location + " (" + distance + " km from center)");
    }).then(function(result){
          console.log("promise resolved with:" + result);
        }, function(error){
          console.error(error)
        });

Но это выводит ошибку о том, что «undefined не является функцией», ссылающейся на связанную функцию. Кто-нибудь знает, как использовать промисы в Geofire?

Спасибо


person Ninja    schedule 23.08.2017    source источник


Ответы (1)


Таким образом, только функции get, set и remove в классе GeoFire возвращают обещания. Вот так:

geoFire.get("some_key").then(function(location) {
  if (location === null) {
    console.log("Provided key is not in GeoFire");
  }
  else {
    console.log("Provided key has a location of " + location);
  }
}, function(error) {
  console.log("Error: " + error);
});

Однако функция on вместо этого возвращает GeoQuery, чья функция on возвращает GeoCallbackRegistration, которая используется для уничтожения запроса с помощью функции cancel (которая ничего не возвращает).

var onKeyEnteredRegistration = this.geoQuery.on("key_entered", function(key, location, distance) {
     console.log(key + " entered query at " + location + " (" + distance + " km from center)");
});

onKeyEnteredRegistration.cancel(); // the "key_entered" event will stop firing
person MichaelSolati    schedule 25.07.2018