該函數從數據庫中獲取問題並應返回該問題。 數據庫是一個Parse對象(https://www.parse.com/docs/js_guide)。正如代碼中的註釋所指出的那樣,問題可以從db調用的成功函數中訪問,但不能從外部訪問,只是簡單地將return語句放在成功塊中也不起作用。 下面的代碼。有什麼建議麼?變量不能在成功函數之外訪問
function getQuest(){
var Question = Parse.Object.extend("Question");
var query = new Parse.Query("Question");
var questlist = [];
var newquestion;
//get list of questions if chosen track is python or java. track is set globally
if (track == "python")
{
query.equalTo("track", "xstsysysus7");
} else if (track == "java"){
query.equalTo("track", "XAWqBgxFAP");
}
query.find({
success: function(questions){
// return list of questions
var i = Math.floor(Math.random()*10);
newquestion = questions[i].get('question');
console.log(newquestion); // works here
},
error: function(error){
console.log(error.message);
}
});
console.log(newquestion); //returns undefined here
return newquestion;
}
我猜這是一個異步問題。是「成功」還是「query.find」異步調用?如果是這樣,那麼發生了什麼是正常的,你可以在SO上找到許多類似的答案。 – elclanrs
你能指出一個在這種情況下會有幫助的SO問題嗎? – algorithmicCoder
這應該有助於http://stackoverflow.com/search?q=javascript+async+variable – elclanrs