Sequential Parse Promises使用不同的输入运行Cloud Function

时间:2015-12-13 02:41:17

标签: javascript parse-platform cloud-code

我正在尝试使用不同长度和Cloud Function参数创建一个Parse Promises的顺序链,如下所示:

var anArray = ['1', '2'];
var promise = new Parse.Promise.as();

for (var i = 0; i < anArray.length; i++) {
    promise = promise.then(
        function() {
            return Parse.Cloud.run('cloudFunc', {arg: anArray[i]});
        }
    )
}

promise.then(
    function(result) {
        // print result of last promise
    }
);

Parse.Cloud.define('cloudFunc', function(request, response) {
    response.success(request.params.arg);
});

如果数组只包含一个元素,则此方法很有效,但所有后续的Cloud Function调用都是使用 arg = undefined 进行的。有没有办法让我可以获得预期的功能?

1 个答案:

答案 0 :(得分:1)

我怀疑i到达2,因为For循环在大多数云调用解析之前结束,这意味着您可能会发送anArray[2]作为参数,这是显然未定义。将For循环替换为forEach,以确保将数组的正确元素作为每个调用的参数发送:

anArray.forEach(function(element) {
    promise = promise.then( function() {
        return Parse.Cloud.run('cloudFunc', {arg: element});
    });
});