对于我当前的应用程序,我根据用户的当前位置和用户的家庭地址获取位置列表,因此两者不同。我将它们保存到两个不同的geofire树中,并希望在单独的时间查询它们,但最后,我想将它们组合在一起。所以我的数据可能看起来像这样。我的问题是如何在数据加载完成后合并这两个数据,我担心如果我在ready子句之外执行我的操作,我的所有数据都不会准备好,但如果我将操作放在任何一个中ready子句,另一个可能没准备好。 谢谢! -currentLocationGeo -user1 -lat:12.345 -lng:53.5435 -addressLocationGeo -user1 -lat: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是否真的准备就绪,而不是在地理位置准备就绪。
答案 0 :(得分:1)
你需要在这里使用promises。 Angular就像$q service一样。
<?xml version="1.0" encoding="UTF-8"?>
<entity1>
<businessElements>
<key>requestID</key>
<type>???</type>
<value>TV00001001</value>
</businessElements>
<entity2>
<businessElements>
<key>effectiveDt</key>
<type>???</type>
<value>2001-12-31T12:00:00</value>
</businessElements>
<businessElements>
<key>companyCd</key>
<type>???</type>
<value>companyCd</value>
</businessElements>
<entity3>
<vo1>
<businessElements>
<key>att1</key>
<type>???</type>
<value>true</value>
</businessElements>
<businessElements>
<key>att2</key>
<type>???</type>
<value>vehicleId</value>
</businessElements>
<businessElements>
<key>att3</key>
<type>???</type>
<value>true</value>
</businessElements>
</vo1>
</entity3>
</entity2>
</entity1>
可以满足您的需求,等待完成所有承诺。但是如果你没有承诺,你可以创建2个延迟对象并在准备好的回调中解决它们,并在$ q.all()之后等待。
$q.all