我已经搜索了几个小时尝试修复此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);
},
它似乎可以提醒您。
有什么想法?
query.find是异步的,您需要在成功函数的内部设置变量,然后调用使用结果的代码。
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) {
}
});
}
我弄清楚了QUERY.GET被困在数小时后是异步的。直到我将其他所有内容剥离出$(function(){});阻止并在控制台上看到查询在块之后发射。最终的想法是将模型和视图加载到Facebook应用程序中,该应用程序还具有异步的INIT函数。我没想到解析查询也会异步。