从parse.com循环查询

时间:2015-12-04 11:10:10

标签: html parse-platform

我使用以下函数从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;
  }

1 个答案:

答案 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
});