我使用以下函数从parse中检索数据并将其附加到google.maps.LatLng
由于某种原因,如果testObject包含多个数据,则循环不起作用。我认为它看起来与其他许多描述一样,我不明白它为什么不起作用。
function getPoints() {
a = [];
var TestObject = Parse.Object.extend("Gas");
var query = new Parse.Query(TestObject);
query.find({
success: function(testObject) {
for (var i = 0; i < testObject.length; i++) {
a.push(new google.maps.LatLng(testObject[i].get("LAT"), testObject[i].get("LNG")));
}
},
error: function(error) {
alert("Error: " + error.code + " " + error.message);
}
});
return a;
}
答案 0 :(得分:1)
这是因为find
Parse函数的异步性质。当你调用这个函数时,它将立即返回一个Parse Promise
但是你需要等待调用success
回调来获取你的数据。相反,您将立即从getPoints
函数返回,并且您不会感到惊讶,因为您没有得到任何结果。通常你编写一个函数来返回一个Promise并等待它被解析,然后处理结果,如下所示:
function getPoints() {
var query = new Parse.Query("Gas");
return query.find();
}
然后你可以使用这样的功能:
getPoints().then( function(testObject) {
for (var i = 0; i < testObject.length; i++) {
// process your results here
}
}, function(error) {
// error
});