Звонок на resolve
должен быть внутри on('key_entered'
:
function geofireQuery(lat, lng, rad){
const result = [];
return new Promise((resolve, reject) => {
const geofireRef = new GeoFire(admin.database().ref('geofire'));
geofireRef.query({
center: [lat, lng],
radius: rad //kilometers
}).on('key_entered', (key, location, distance) => {
result.push(key);
resolve(result);
});
});
}
Это гарантирует, что обещание будет выполнено при вводе первого ключа. Если вы хотите восстановить обещание, когда все ключи пришли, добавьте прослушиватель для on('ready'
, который срабатывает, когда все начальные ключи ключи пришли.