为什么';这个jQuery函数不返回任何东西吗?
我已经搜索了几个小时试图修复这个jQuery/JS代码,但它似乎不想返回任何东西为什么';这个jQuery函数不返回任何东西吗?,jquery,function,null,return,Jquery,Function,Null,Return,我已经搜索了几个小时试图修复这个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(
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是异步的,您需要在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) {
}
});
}
经过几个小时的讨论,我发现query.get是异步的。直到我从$(函数(){})中剥离了所有其他内容;块,并在控制台上看到查询在块之后激发。最终的想法是将模型和视图加载到Facebook应用程序中,该应用程序还具有异步初始化功能。我没想到解析查询也是异步的 让我猜猜:
query.find
是(另一种)异步代码吗?tempURLS
做什么?它没有在任何地方使用。query.find是一个异步代码,但我不会从其他任何地方得到直接的答案。tempURLS在前面被用于调试,它不应该在那里。我不熟悉解析
,但正如@raina77ow所说,我假设查询。查找
是一个异步请求。基本上,这意味着请求被发送,然后代码继续执行而不等待,这意味着在执行success
中的代码之前,它会去并返回url
<在执行success
之前,code>url为空。那么是否有某种函数使其等待success
中的代码执行完毕?