我已经搜索了几个小时试图修复这个jQuery / JS代码,但它似乎并不想返回任何东西。
var result = getURLS(); // this is always blank
function getURLS() {
var urls = [];
var URL_record = Parse.Object.extend("URL_record");
var query = new Parse.Query(URL_record);
query.equalTo("user", Parse.User.current());
query.ascending("date");
query.find({
success : function(results) {
var tempURLS = [];
$.each(results, function(index, record) {
urls.push(record.get("shortURL") + " " + record.get("longURL"));
});
},
error : function(error) {
}
});
return urls;
}
虽然如果我从这个特定功能创建一个警报功能:
success : function(results) {
var tempURLS = [];
$.each(results, function(index, record) {
urls.push(record.get("shortURL") + " " + record.get("longURL"));
});
alert(urls);
},
似乎很警觉。
有什么想法吗?
答案 0 :(得分:2)
query.find是异步的,您需要在success函数内部设置变量,然后调用使用result的代码。
var result;
getURLS();
function getURLS() {
var urls = [];
var URL_record = Parse.Object.extend("URL_record");
var query = new Parse.Query(URL_record);
query.equalTo("user", Parse.User.current());
query.ascending("date");
query.find({
success : function(results) {
var tempURLS = [];
$.each(results, function(index, record) {
urls.push(record.get("shortURL") + " " + record.get("longURL"));
});
result = urls;
// call code that uses result here
processResults(result);
},
error : function(error) {
}
});
}
答案 1 :(得分:0)
我发现query.get在被困了几个小时之后是异步的。直到我从$(function(){})中删除了所有其他内容;阻止并在控制台上看到查询在块之后触发。最终的想法是将模型和视图加载到Facebook应用程序中,该应用程序还具有异步初始化函数。我没想到Parse查询也是异步的。