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串行或并行执行任务。

参考。并行承诺,串行承诺

以下是使用Parse.Promise.when. 当它的所有输入承诺都被解决时,承诺when将被解决。

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 回答