2015-12-19 34 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)當我運行上面的代碼時,我得到的輸出是「undefined」,因爲我猜測它不會等到結果返回?如何從parse.com中的查詢返回值

如何將查詢結果的值從函數外部保存?

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() 
    });