如何查询两个不同的 firebase 地理查询?
How do I query two different firebase geo query?
对于我当前的应用程序,我正在获取基于用户当前位置和用户家庭住址的位置列表,因此两者不同。我将它们保存到两个不同的 geofire 树中,并想在不同的时间查询它们,但最后,我想将它们组合在一起。所以我的数据可能看起来像这样。我的问题是数据加载完成后如何合并这两个数据,恐怕如果我在 ready 子句之外执行我的操作,我的所有数据都不会准备好,但是如果我将操作放在其中一个中ready 子句,另一个可能还没有准备好。
谢谢!
-currentLocationGeo
-用户1
-纬度:12.345
-lng:53.5435
-地址位置地理
-用户1
-纬度:124.544
-lng:34.54
currentLocationGeo.on("key_entered", function (key, location, distance) {
});
addressLocationGeo.on("key_entered", function (key, location, distance) {
});
currentLocationGeo.on("ready", function () {
});
addressLocationGeo.on("ready", function () {
//do something to combine the two geo together and make sure everything is loaded.
finalGeo.push(eachLocation);
});
//对 finalgeo 做一些事情,但我不确定 finalGeo 是否真的准备好而没有准备好地理。
这里需要使用promises。 Angular 确实像 $q service。
$q.all
确实满足您的需求,等待完成所有承诺。但是如果你没有承诺,你可以创建 2 个延迟对象并在你准备好的回调中解决它们,然后等待 $q.all().
var currentLocationdeferred = $q.defer();
var addressLocationdeferred = $q.defer();
currentLocationGeo.on("key_entered", function (key, location, distance) {
});
addressLocationGeo.on("key_entered", function (key, location, distance) {
});
currentLocationGeo.on("ready", function () {
currentLocationdeferred.resolve('any result');
});
addressLocationGeo.on("ready", function () {
addressLocationdeferred.resolve('any result 2');
});
$q.all([currentLocationdeferred.promise, addressLocationdeferred.promise]).then(function(result){
// result[0] == 'any result'
// result[1] == 'any result 2'
finalGeo.push(eachLocation);
})
对于我当前的应用程序,我正在获取基于用户当前位置和用户家庭住址的位置列表,因此两者不同。我将它们保存到两个不同的 geofire 树中,并想在不同的时间查询它们,但最后,我想将它们组合在一起。所以我的数据可能看起来像这样。我的问题是数据加载完成后如何合并这两个数据,恐怕如果我在 ready 子句之外执行我的操作,我的所有数据都不会准备好,但是如果我将操作放在其中一个中ready 子句,另一个可能还没有准备好。 谢谢! -currentLocationGeo -用户1 -纬度:12.345 -lng:53.5435 -地址位置地理 -用户1 -纬度:124.544 -lng:34.54
currentLocationGeo.on("key_entered", function (key, location, distance) {
});
addressLocationGeo.on("key_entered", function (key, location, distance) {
});
currentLocationGeo.on("ready", function () {
});
addressLocationGeo.on("ready", function () {
//do something to combine the two geo together and make sure everything is loaded.
finalGeo.push(eachLocation);
});
//对 finalgeo 做一些事情,但我不确定 finalGeo 是否真的准备好而没有准备好地理。
这里需要使用promises。 Angular 确实像 $q service。
$q.all
确实满足您的需求,等待完成所有承诺。但是如果你没有承诺,你可以创建 2 个延迟对象并在你准备好的回调中解决它们,然后等待 $q.all().
var currentLocationdeferred = $q.defer();
var addressLocationdeferred = $q.defer();
currentLocationGeo.on("key_entered", function (key, location, distance) {
});
addressLocationGeo.on("key_entered", function (key, location, distance) {
});
currentLocationGeo.on("ready", function () {
currentLocationdeferred.resolve('any result');
});
addressLocationGeo.on("ready", function () {
addressLocationdeferred.resolve('any result 2');
});
$q.all([currentLocationdeferred.promise, addressLocationdeferred.promise]).then(function(result){
// result[0] == 'any result'
// result[1] == 'any result 2'
finalGeo.push(eachLocation);
})