为什么';这个jQuery函数不返回任何东西吗?

为什么';这个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(

我已经搜索了几个小时试图修复这个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是异步的,您需要在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
中的代码执行完毕?