2015-12-19 3 views
-1
function getCategory(categoryId){ 
    var TrainingPackage = Parse.Object.extend("TrainingPackage"); 
    var query = new Parse.Query(TrainingPackage); 

    query.equalTo("category_id", "12asfas234"); 
    query.find({ 
    success: function(results) { 
     return results; 
    } 
    }, 
    error: function(error) { 
    console.error("Error: " + error.code + " " + error.message); 
    } 
}); 

console.log(getCategory()); 

doSomething(getCategory()); 

1) Когда я запускаю вышеуказанный код, вывод, который я получаю, является «неопределенным», потому что я предполагаю, что он не ждет, пока результаты не будут возвращены ?Как вернуть значение из запроса в parse.com

Как сохранить значение результатов из запроса OUTSIDE функции?

2) Если я хочу сделать любой запрос, основанный на результатах первого запроса, как это сделать? Как я могу заставить doSomething (getCategory()) ждать ответа?

Я искал обещания и обратные вызовы, но все это очень запутывает!

+0

http://stackoverflow.com/a/14220323/1485715 – Moonwalkr

ответ

1

Такой тип асинхронной активности должен обрабатываться обратными вызовами. Query.find() - это асинхронное действие. Вы должны приложить обратный вызов к событию успеха. Таким образом, этот обратный вызов будет выполнен только после того, как query.find() успешно завершит выборку данных.

function getCategory(categoryId,callback){ 
    var TrainingPackage = Parse.Object.extend("TrainingPackage"); 
    var query = new Parse.Query(TrainingPackage); 

    query.equalTo("category_id", "12asfas234"); 
    query.find({ 
    success: function(results) { 
    callback(results); 
    //return results; 
    } 
    }, 
    error: function(error){ 
    console.error("Error: " + error.code + " " + error.message); 
} 
}); 


getCategory(id,function(results){ 
    console.log(results); 
    })); 

getCategory(id,function(results){ 
    doSomething() 
    }); 
Смежные вопросы