2015-12-04 4 views
0

Я использую следующие функции для извлечения данных из синтаксического анализа и добавить его к google.maps.LatLngLooping запроса от parse.com

По какой-то причине, цикл не работает, если 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

Это происходит из-за асинхронной природы функции find разбора. Когда вы вызываете эту функцию, она немедленно возвращается с помощью Parse Promise, но вам нужно дождаться, когда будет вызван обратный вызов success, чтобы получить ваши данные. Вместо этого вы немедленно возвращаетесь из своей функции getPoints, и не должно быть сюрпризом, что вы не получите никаких результатов. Как правило, вы написать функцию, возвращающую обещание и ждать, пока она будет решена, а затем обработать результаты, что-то вроде этого:

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 
}); 
+0

Спасибо за ответ! Это помогло сделать функцию абсолютно надежной. То, что я нашел с предыдущим методом, заключается в том, что он может возвращать одни данные с помощью database_A, но не с database_B. Мне было странно, что database_B ничего не возвращал. Основная проблема заключалась в том, что database_B не был настроен на «публичное чтение/запись». Если данные включены, это работает безупречно с вашей функцией и публичным чтением. Благодаря! –

Смежные вопросы