该函数从数据库中获取问题并应返回该问题。 数据库是一个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