0

CloudCode を初めて試して気に入りました。

電話番号が既にアプリを持っているかどうかを確認するために電話番号を CloudCode に渡す iOS アプリを作成しています。

問題は、クエリが完了する前に成功ブロックを起動することです。クエリがいくつあるかを知り、最後のクエリかどうかを判断する必要があると思いますか? この .then 関数も見ましたか?

Parse.Cloud.define("processNumbers", function(request, response) {

    Parse.Cloud.useMasterKey();
    var phoneNumbers = request.params.phoneNumbers;

    phoneNumbers.forEach(function(entry) {

        var query = new Parse.Query(Parse.User);
        //query.equalTo("username", entry);

        query.find({
            success: function(results) {
                console.log("has app");

            },
            error: function() {
                console.log("not found");

             }
        }); 

        console.log(entry);

    });

    response.success(phoneNumbers);
});
4

1 に答える 1

4

promiseタスクを直列または並列で実行するために使用できます。

参照。Promise in Parallel , Promise in Series

以下は、 を使用した並列バージョンParse.Promise.whenです。すべての入力promisewhenが解決されると、promise は解決されます。

Parse.Cloud.define("processNumbers", function(request, response) {

    Parse.Cloud.useMasterKey();
    var phoneNumbers = request.params.phoneNumbers;
    var promises = [];

    phoneNumbers.forEach(function(entry) {

        var query = new Parse.Query(Parse.User);
        //query.equalTo("username", entry);

        promise.push(
            query.find().then(function(results) {
                console.log("has app");

            }, function() {
                console.log("not found");

            });
        ) 

        console.log(entry);

    });
    return Parse.Promise
        .when(promises)
        .then(function() {
            response.success(phoneNumbers);
        });

    response.success(phoneNumbers);
});

ps まだテストされていません。自己責任で使用してください

于 2014-11-19T18:47:12.983 に答える