在 geofire 的“key_entered”事件上创建承诺的问题
Issue with creating a promise on `key_entered` event for geofire
我想创建一个函数,returns promise,它使用 geofire 库根据经纬度和半径查询 firebase。如何为'key_entered'事件创建对geofire回调函数的依赖,完成其回调函数的执行,然后resolve promise。
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);
});
}
对 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'
添加一个侦听器,当所有初始密钥进入时触发进来
我想创建一个函数,returns promise,它使用 geofire 库根据经纬度和半径查询 firebase。如何为'key_entered'事件创建对geofire回调函数的依赖,完成其回调函数的执行,然后resolve promise。
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);
});
}
对 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'
添加一个侦听器,当所有初始密钥进入时触发进来