0

我正在尝试将所有返回的对象存储到一个对象中以备后用。我已经设置了循环,但是当我尝试使用新对象执行一些代码时,它是空的。在这种情况下,这里警告对象。我猜在循环完成之前警报正在执行。有任何解决这个问题的方法吗?

var followers = new Array;
Parse.initialize("xxxxxx", "xxxxx");
var currentUser = Parse.User.current();
var users = JSON.stringify(currentUser);
var user = eval("(" + users + ")");
var listsfollow = user.Follow;
for (var i = 0; i < listsfollow.length; i++) {
    var allUsers = Parse.Object.extend("User");
    var query = new Parse.Query(allUsers);
    query.get(listsfollow[i], {
        success: function (results) {
            followers.push(results);
        },
        error: function (object, error) {
            // The object was not retrieved successfully.
            // error is a Parse.Error with an error code and description.
        }
    });
};
alert(followers);
4

3 回答 3

0

您是正确的,jquery 中的 AJAX 内容是异步的,因此.get()会在警报之后发生。最快和最脏的方法是在发出请求之前将其设置为 async 为 false:http ://api.jquery.com/jQuery.ajax/ 更好的方法是让您的代码响应调用的结果每当它准备好时。这将防止页面阻塞并使您的代码更快。

于 2013-03-05T09:03:23.173 回答
0

这是一个异步查询,并且在查询启动后立即显示警报,因此它不太可能在查询返回任何结果后执行。

任何依赖于查询结果的代码都应该移到成功或错误回调函数中。

于 2013-03-05T09:35:56.277 回答
-1

我不知道如何让它等待查询,但我在最后一次循环迭代之后用它来做一些事情。工作得很好。

          if((--remaining)==0)alert(followers);
于 2013-03-06T07:04:17.180 回答