如何查询两个不同的 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);
})