0

後で使用するために、返されたすべてのオブジェクトを1つのオブジェクトに保存しようとしています。ループを設定しましたが、新しいオブジェクトでコードを実行しようとすると、そのオブジェクトは空になります。この場合、ここでオブジェクトに警告します。ループが完了する前にアラートが実行されていると思います。これを修正する方法はありますか?

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()、アラートの後に発生します。最も速くて汚い方法は、リクエストを発行する前に非同期に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 に答える