1

我已经搜索了几个小时试图修复这个 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);
},

它似乎很好地提醒。

有任何想法吗?

4

2 回答 2

2

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) {

        }
    });
}
于 2012-10-23T22:24:40.020 回答
0

我发现 query.get 在被难住了几个小时后是异步的。直到我从我的 $(function () {}); 块并在控制台上看到查询在块之后触发。最终的想法是将模型和视图加载到 Facebook 应用程序中,该应用程序也具有异步初始化功能。我没想到 Parse 查询也是异步的。

于 2012-11-05T18:49:25.823 回答